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
:D ตัวอย่างการปรับ 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
:D ตัวอย่างการปรับ 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