Page 1 of 1
vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Wed Jun 10, 2015 11:38 am
by Pongwipat
คือผมต้องการให้แสดงหลายค่า เช่น ถ้าผมเลือก "a" ใน (combobox1) แล้ว "a" match กับ "1" ในคอลัมน์ A แล้ว จะให้ "1" ในคอลัมน์ F math กับ "ก,ด,พ,ผ,ป" ในคอลัมน์ G แล้วแสดงทุกค่าใน (combobox2) ควรทำอย่างไรดีครับ ลองทำแล้วมันขึ้นแค่ค่าเดียว คือ ก ตัวแรก
Code: Select all
Private Sub ComboBox1_Change()
Dim i, j As Integer
With Application.WorksheetFunction
i = Val(.Index(Sheets("sheet1").Range("a2:a10000"), .Match(Me.ComboBox1, Sheets("Sheet1").Range("b2:b10000"), 0)))
ComboBox2.Value = Application.WorksheetFunction.VLookup((i), Sheets("Sheet1").Range("F2:G10000"), 2, False)
End With
End Sub
Re: vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Wed Jun 10, 2015 6:11 pm
by snasui

ตัวอย่างการปรับ Code ตามด้านล่างครับ
Code: Select all
Private Sub ComboBox1_Change()
Dim i, j As Integer
Dim rall As Range, r As Range
With Sheets(1)
Set rall = .Range("f2", .Range("f" & .Rows.Count).End(xlUp))
End With
With Application.WorksheetFunction
i = Val(.Index(Sheets("sheet1").Range("a2:a10000"), .Match(Me.ComboBox1, Sheets("Sheet1").Range("b2:b10000"), 0)))
For Each r In rall
If r.Value = i Then
ComboBox2.AddItem r.Offset(0, 1)
End If
Next r
End With
End Sub
Re: vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Wed Jun 10, 2015 8:57 pm
by Pongwipat
ครับ ขอบคุณมากครับอาจารย์
ผมลองฝึกเขียนดูได้อีกแบบครับ
Code: Select all
Private Sub ComboBox1_Change()
Dim i, m, n As Integer
Dim lRow As Long
With Application.WorksheetFunction
i = Val(.Index(Sheets("sheet1").Range("a2:a10000"), .Match(Me.ComboBox1, Sheets("Sheet1").Range("b2:b10000"), 0)))
End With
On Error Resume Next
m = Application.WorksheetFunction.Match(i, Range("F1:F200"), 0)
n = Application.WorksheetFunction.Match(i, Range("F1:F200"), 1)
With Sheets("Sheet1")
ComboBox2.RowSource = .Range(.Cells(m, 7), .Cells(n, 7)).Address
End With
End Sub
Re: vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Thu Jun 11, 2015 10:08 am
by Pongwipat
แต่ที่ผมโค๊ดมีปัญหา เวลาเปลี่ยนเป็น sheet อื่นที่ไม่ใช่ Sheet1 มันไม่ขึ้น
แต่ของอาจารย์ใช้ได้ไม่มีปัญหา ทุก sheet ครับ
Re: vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Thu Jun 11, 2015 11:05 am
by Pongwipat
ผมลองใช้โค๊ดของอาจารย์ พบปัญหานิดหนึ่ง ครับ เวลาผมเลือก a (combobox1) จะได้ ก,ด,พ,ผ,ป (combobox2) แต่พอเลือก b ต่อจาก a (combobox2) ผลปรากฏว่า มันได้ ก,ด,พ,ผ,ป,ส,ว,ง,ล ซึ่งไม่ตรงกับ b (ผมแนบไฟล์ภาพมาด้วยครับ) ควรแก้ไขอย่างไรดีครับ
Re: vba userform ถามเรื่อง vlookup และ match แสดงหลายค่า
Posted: Thu Jun 11, 2015 6:36 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code
ComboBox2.Clear
With Application.WorksheetFunction
i = Val(.Index(Sheets("sheet1").Range("a2:a10000"), .Match(Me.ComboBox1, Sheets("Sheet1").Range("b2:b10000"), 0)))
For Each r In rall
If r.Value = i Then
ComboBox2.AddItem r.Offset(0, 1)
End If
Next r
End With