EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub paidpro()
Dim sh As Worksheet
Dim itme As Long
Dim otme As Long
Application.DisplayAlerts = False
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("Main")
With sh
cp = Application.Match("central", .Range("a1:a50000"), 0)
op = Application.Match("country", .Range("a5:a50000"), 0)
End With
If Application.CountIfs(.Range("b6:b30"), sh.Name) = 0 Then
With .Range("b30").End(xlUp).Offset(1, 0)
.Value = sh.Name
.Offset(0, 2).Value = Application.VLookup(sh.Range("d" & cp & ":d" & op), 2, 0)
End With
End If
End With
End If
Next sh
Application.DisplayAlerts = True
End Sub
Code: Select all
Sub paidpro()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("province")
For Each r In sh.Range("d8:d99")
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), "Not foud")
Next r
End With
End If
Next sh
Application.DisplayAlerts = True
End Sub
ผมได้ปรับตามที่อาจารย์แนะนำแล้วครับ ในส่วนของการแทนค่ารหัสจังหวัดด้วยชื่อจังหวัดสามารถทำได้แล้ว แต่พบปัญหาว่าหลังจากรัน macro พบว่าในส่วนของหัวคอลลัมม์ 'province' ในส่วนของข้อมูล Country หายไปครับ รกกวนแนะนำด้วยครับ ขอบพระคุณครับpuriwutpokin wrote: Tue Jan 09, 2024 1:29 pm ลองปรับตามนี้ดูครับCode: Select all
Sub paidpro() Dim sh As Worksheet Dim r As Range Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Index > 3 Then With Sheets("province") For Each r In sh.Range("d8:d99") r.Value = Application.IfError(Application. _ VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), "Not foud") Next r End With End If Next sh Application.DisplayAlerts = True End Sub
Code: Select all
Sub paidpro()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("province")
For Each r In sh.Range("d8:d10000")
If Len(r.Text) < 3 Then
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ")
End If
Next r
End With
End If
puriwutpokin wrote: Tue Jan 09, 2024 4:26 pm ปรับตามนี้ครับCode: Select all
Sub paidpro() Dim sh As Worksheet Dim r As Range Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Index > 3 Then With Sheets("province") For Each r In sh.Range("d8:d10000") If Len(r.Text) < 3 Then r.Value = Application.IfError(Application. _ VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ") End If Next r End With End If
Code: Select all
Sub paidpro()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("province")
For Each r In sh.Range("d8:d10000")
If Len(r.Text) < 3 Then
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ")
End If
Next r
End With
End If
End Sub
แก้ไขได้แล้วครับ ขอบพระคุณครับอาจารย์ code ที่แก้ไขครับ9KiTTi wrote: Tue Jan 09, 2024 4:58 pmpuriwutpokin wrote: Tue Jan 09, 2024 4:26 pm ปรับตามนี้ครับCode: Select all
Sub paidpro() Dim sh As Worksheet Dim r As Range Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Index > 3 Then With Sheets("province") For Each r In sh.Range("d8:d10000") If Len(r.Text) < 3 Then r.Value = Application.IfError(Application. _ VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ") End If Next r End With End If
ติด error ไม่มี end sub ผมเพิ่มแล้วยังไม่หายครับ
Code: Select all
Sub paidpro() Dim sh As Worksheet Dim r As Range Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Index > 3 Then With Sheets("province") For Each r In sh.Range("d8:d10000") If Len(r.Text) < 3 Then r.Value = Application.IfError(Application. _ VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ") End If Next r End With End If End Sub
Code: Select all
Sub paidpro()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("province")
For Each r In sh.Range("d8:d10000")
If Len(r.Text) < 3 Then
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("province").Range("a2:b79"), 2, 0), " ")
End If
Next r
End With
End If
Next sh
Application.DisplayAlerts = True
End Sub
Code: Select all
Sub paidname()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 3 Then
With Sheets("hoscode")
For Each r In sh.Range("q10:q10000")
If Len(r.Text) < 3 Then
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("hoscode").Range("a2:b17553"), 2, 0), "ไม่พบข้อมูล")
End If
Next r
End With
End If
Next sh
Application.DisplayAlerts = True
End Sub
Code: Select all
Sub paidname()
Dim sh As Worksheet
Dim r As Range
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
If sh.Index > 2 Then
With Sheets("hoscode")
For Each r In sh.Range("q10:q10000")
If Len(r.Text) = 5 Then
r.Value = Application.IfError(Application. _
VLookup(r.Text, Sheets("hoscode").Range("a2:b17553"), 2, 0), "ไม่พบข้อมูล")
End If
Next r
End With
End If
Next sh
Application.DisplayAlerts = True
End Sub
ใช้งานได้แล้วครับ ขอบพระคุณครับอาจารย์puriwutpokin wrote: Wed Jan 10, 2024 9:11 pm ปรับตามนี้ดูครับCode: Select all
Sub paidname() Dim sh As Worksheet Dim r As Range Application.DisplayAlerts = False On Error Resume Next For Each sh In Worksheets If sh.Index > 2 Then With Sheets("hoscode") For Each r In sh.Range("q10:q10000") If Len(r.Text) = 5 Then r.Value = Application.IfError(Application. _ VLookup(r.Text, Sheets("hoscode").Range("a2:b17553"), 2, 0), "ไม่พบข้อมูล") End If Next r End With End If Next sh Application.DisplayAlerts = True End Sub