snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub PasteData()
Dim r As Range, ra As Range
Set ra = ActiveSheet.Range("C2", _
ActiveSheet.Range("C2").End(xlDown))
For Each r In ra
If r = "Manager" Or r = "Asst. Manager" Then
Range("A2").End(xlDown).Offset(1, 0).Resize(1, 3) _
= r.Offset(0, -2).Resize(1, 3).Value
Range("C2").End(xlDown) = "Head Office"
End If
Next r
End Sub
ลองเขียนแบบนี้ ได้ผลออกมาแล้วค่ะ
run แล้วรู้สึกว่าช้าๆ ไม่แน่ใจว่าจะมีวิธีที่ทำให้การ run เร็วกว่านี้หรือเปล่าคะ
Sub PasteData()
Dim r As Range, ra As Range
Set ra = ActiveSheet.Range("E20", _
ActiveSheet.Range("E20").End(xlDown))
For Each r In ra
If r = "Manager" Or r = "Asst. Manager" Then
Range("A2").End(xlDown).Offset(1, 0).Resize(1, 3) _
= r.Offset(0, -2).Resize(1, 3).Value
Range("C2").End(xlDown) = "Head Office"
If lcode = "1" Then
Range("A2").End(xlDown) = "A" & rcode
Else
If lcode = "2" Then
Range("A2").End(xlDown) = "B" & rcode
Else
If lcode = "6" Then
Range("A2").End(xlDown) = "F" & rcode
Else
If lcode = "7" Then
Range("A2").End(xlDown) = "G" & rcode
End If
End If
End If
End If
End If
Next r
End Sub
ขอบคุณค่ะ
Sub PasteData()
Dim r As Range, ra As Range, s As Range
Set ra = Range("C2", Range("C2").End(xlDown))
For Each r In ra
If r = "Manager" Or r = "Asst. Manager" Then
Range("A2").End(xlDown).Offset(1, 0).Resize(1, 3) _
= r.Offset(0, -2).Resize(1, 3).Value
Range("C2").End(xlDown) = "Head Office"
Set s = r.End(xlDown).Offset(0, -2)
Select Case Left(s, 1)
Case 1: s = "A" & Right(s, 4)
Case 2: s = "B" & Right(s, 4)
Case 6: s = "F" & Right(s, 4)
Case 7: s = "G" & Right(s, 4)
End Select
End If
Next r
End Sub