Page 1 of 1

การใช้ Indirect โดยใช้ Excel VBA

Posted: Sat Aug 29, 2020 11:55 pm
by Pongpat_s
สวัสดีครับ
ผมต้องการใช้ VBA ให้คล้ายกับการใช้ INDIRECT ใน Excel function ครับ
เพราะก่อนหน้านั้นผมใช้ Indirect แต่ถ้าเมื่อข้อมูลมีหลายร้อย row ทำให้ไฟล์ช้าคำนวนช้ามากครับ เลยต้องมาใช้ vba แทน :D
ผมได้ลองเขียนตาม code ข้างล่างครับ แต่มันขึ้น Error ที่คำสั่ง indirect
ขอบคุณสำหรับคำตอบและคำแนะนำครับ :thup:

Code: Select all

lRow = Cells(Rows.Count, 1).End(xlUp).Row
    For x = 2 To lRow       ' x for loop row
        For y = 2 To 3      ' y for loop column
            Cells(x, y).Value = WorksheetFunction. _
            SumProduct(1 * IsNumber(Search(Range("a" & x), INDIRECT(Cells(1, y)))))
        Next y
    Next x
    

Re: การใช้ Indirect โดยใช้ Excel VBA

Posted: Sun Aug 30, 2020 8:04 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Sub searchNum()

    Dim x As Long, y As Long, z As Long
    Dim lRow As Long, r As Range
    
    Sheets("All").Activate
    lRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For x = 2 To lRow       ' x for loop row
        For y = 2 To 3      ' y for loop column
            z = 0
            For Each r In Range(Names(Cells(1, y).Value).RefersTo)
                If InStr(r.Value, Range("a" & x).Value) > 0 Then
                    z = z + 1
                End If
            Next r
            Cells(x, y).Value = z
        Next y
    Next x
    
End Sub
การเขียน VBA ให้ทำงานเหมือนสูตรไม่ได้เป็นการเพิ่มความเร็ว สูตรใน Excel จะเร็วกว่าเขียนสูตรด้วย VBA แทบทั้งสิ้นหากว่าสูตรนั้นมีความสามารถเทียบเท่ากันทุกประการ ทั้งนี้เพราะฟังก์ชั่นเหล่านั้นถูกปรับความสามารถมาอย่างดีแล้วนั่นเองครับ

ถ้าจะช่วยได้ก็แค่แสดงเป็นผลลัพธ์ของสูตรแทนแสดงสูตรที่ไม่ต้องคำนวณครับ

Re: การใช้ Indirect โดยใช้ Excel VBA

Posted: Mon Aug 31, 2020 7:23 am
by Pongpat_s
ขอบคุณมากครับอาจารย์ เป็นประโยชน์ให้ผมในการศึกษาต่อเลย (^/\^)