Page 1 of 1

อยากทราบวิธีนำสูตร IfError+Index+Matchมาเขียนใน VBAครับ

Posted: Wed Jun 27, 2012 6:41 pm
by Thanongkij
ผมอยากนำสูตร IfError+Index+Match เช่น
Cost = "=IFERROR(INDEX($D$3:$K$12,MATCH($C$14,$C$3:$C$12,1),MATCH($E$14,$D$2:$K$2,0)),0)"
ไปเขียนใน VBA ครับ ต้องเขียน Code อย่างไรครับ
ผมแนบไฟล์ตัวอย่างมาให้ด้วยครับ
ขอบคุณล่วงหน้าครับ
Thanongkij

Re: อยากทราบวิธีนำสูตร IfError+Index+Matchมาเขียนใน VBAครับ

Posted: Wed Jun 27, 2012 6:56 pm
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Private Sub cboBackCoat_Click()
    Dim Cost, A1 As Variant
    If cboBackCoat.Value = "äÁèà¤Å×ͺ" Then
            Cost = 0
            Worksheets("Sheet1").Cells(16, 3).Value = Cost
            A1 = 2.54 * Cost
            Worksheets("Sheet1").Cells(17, 3).Value = A1
    Else
            Cost = "=IFERROR(INDEX($D$3:$K$12,MATCH($C$14,$C$3:$C$12,1),MATCH($E$14,$D$2:$K$2,0)),0)"
            Worksheets("Sheet1").Cells(16, 3).Formula = Cost
            A1 = 2.54 * Worksheets("Sheet1").Cells(16, 3)
            Worksheets("Sheet1").Cells(17, 3).Value = A1
    End If
End Sub

Re: อยากทราบวิธีนำสูตร IfError+Index+Matchมาเขียนใน VBAครับ

Posted: Wed Jun 27, 2012 7:19 pm
by Thanongkij
รบกวนถามเพิ่มหน่อยครับ
ทำไมเราถึงเอาตัวแปร Cost ไปคูณกับ 2.54 ตรงบรรทัด A1 = 2.54 * Worksheets("Sheet1").Cells(16, 3)
แทน Worksheets("Sheet1").Cells(16, 3) ไม่ได้ล่ะครั บมันขึ้น Error Type Miss match
จะกำหนด Worksheets("Sheet1").Cells(16, 3) เป็นตัวแปรได้หรือเปล่าครับเพราะต้องนำค่าไปใช้ที่อื่นครับ
ขอบคุณครับ

Re: อยากทราบวิธีนำสูตร IfError+Index+Matchมาเขียนใน VBAครับ

Posted: Wed Jun 27, 2012 7:24 pm
by snasui
:D ที่ไม่ได้เพราะว่าตัวแปร Cost ที่เขียนมานั้นเป็น String ไม่ใช่ Number จากด้านล่าง

Cost = "=IFERROR(INDEX($D$3:$K$12,MATCH($C$14,$C$3:$C$12,1),MATCH($E$14,$D$2:$K$2,0)),0)"

จะนำ Cost ไปทำการคำนวณแบบตัวเลขไม่ได้ครับ หากจะนำ Cost ไปคำนวณต่อก็ให้ Cost รับค่าจากเซลล์ที่นำสูตรจาก Cost ไปใช้อีกทีครับ

Re: อยากทราบวิธีนำสูตร IfError+Index+Matchมาเขียนใน VBAครับ

Posted: Wed Jun 27, 2012 7:35 pm
by Thanongkij
เป็นเว็บไซต์ที่ให้ความรู้มากๆเลยครับ
ขอบคุณครับ