Page 1 of 1

หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Tue Jul 10, 2018 10:29 am
by liveday
เรียน อาจารย์ทุกท่าน

ผมต้องการ หาผลลัพท์ที่มาจาก VLOOKUP ที่ Sheet Inventory ระหว่างแถว Cell G เพื่อลบกับ Cell H ครับ
ผมทำแล้วขึ้น #VALUE ต้องปรับสูตรเพื่อแก้ Error อย่างไรครับ ขอบคุณครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Tue Jul 10, 2018 10:37 am
by parakorn
ปรับเป็น =SUM(IF(ISERROR(G2-H2),0,G2-H2)) ครับ เพราะ Sum ถ้าไม่เจอตัวเลขจะ Error ครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Tue Jul 10, 2018 11:14 am
by liveday
ขอถามเพิ่มนะครับ ถ้าต้องการจะให้เป็นค่าว่าง (ฺBlank) ต้องปรับสูตรอย่างไรครับ
ขอบคุณครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Tue Jul 10, 2018 2:52 pm
by liveday
ผมลองบันทึกมาโครเข้าไป ต้องการให้ใส่สูตรลงไปแบบอัติโนมัติครับ แต่ข้อมูลไม่บันทึกทีละบรรทัดครับ ต้องปรับสูตรอย่างไรครับ
สูตรที่ใส่นี้จะต้อง Copy สูตรที่กำหนดแล้ว ไปวางที่ Sheet Inventory ที่ช่อง Cell I2 เป็นต้นไป พร้อมกับการ AddProduct Sheet(FormIn) สูตรจะอยู่ที่ "UserForm AddProduct" ครับ

Code: Select all

Sub Macro2()
Range("I2:i" & Range("G65536").End(xlUp).Row).FormulaR1C1 = "=SUM(IF(ISERROR(RC[-2]-RC[-1]),0,RC[-2]-RC[-1]))"
    Range("I2").Select
    Application.CutCopyMode = False
    Range("i65536").Select
End Sub
หรืออีกอย่าง เมื่อเราทำการ AddProduct Sheet(FormIn) สูตรจะอยู่ที่ "UserForm AddProduct" ให้ Coppy สูตร

Code: Select all

=SUM(IF(ISERROR(G2-H2),0,G2-H2))
ไปวางที่ Cell I พร้อมๆกันทุกครั้งที่มีการเพิ่ม Product ครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Tue Jul 10, 2018 5:41 pm
by parakorn
คลุมช่วงข้อมูลที่ต้องการ > คลิ๊กขวา ไปที่ Format Cells > Custom > ปรับ Type เป็น #,##0_);(#,##0);""

ส่วน Code ลองปรับดังนี้ครับ

Code: Select all

Sub ReccordFormulas()

If Range("I2") <> "" Then

    Application.Goto Reference:="R1C9"
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.FormulaR1C1 = "=SUM(IF(ISERROR(RC[-2]-RC[-1]),0,RC[-2]-RC[-1]))"

ElseIf Range("I2") = "" Then Range("I2").Select
    Selection.FormulaR1C1 = "=SUM(IF(ISERROR(RC[-2]-RC[-1]),0,RC[-2]-RC[-1]))"

End If
End Sub

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 2:09 pm
by liveday
การบันทึกข้อความสูตร Vlookup จาก Form Addproduct นำมาใส่ที่ Sheet Inventory Cell G กับ H ข้อมูลบันทึกถูกต้องแต่สูตรไม่ทำงานครับ ต้องแก้ไขอย่างไรครับ ขอบคุณครับ

Sheet7.Cells(final, 7) = "=IF(ISNA(VLOOKUP(RC[-5],Import!C7:C12,6,0)),"""",(VLOOKUP(RC[-5],Import!C7:C12,6,0)))"
Sheet7.Cells(final, 8) = "=IF(ISNA(VLOOKUP(RC[-6],Export!C7:C12,6,0)),"""",(VLOOKUP(RC[-6],Export!C7:C12,6,0)))"

Code: Select all

Private Sub CommandButton1_Click()
Dim i As Integer
Dim final As Integer

For i = 2 To 1000
If Sheet7.Cells(i, 2) = "" Then
final = i
Exit For
End If
Next

Sheet7.Cells(final, 1) = "=IF(RC[1]="""","""",COUNTA(R2C[1]:RC[1]))"
Sheet7.Cells(final, 2) = Addproduct.TextBox1
Sheet7.Cells(final, 3) = Addproduct.TextBox2
Sheet7.Cells(final, 4) = Addproduct.TextBox3
Sheet7.Cells(final, 5) = Addproduct.TextBox4
Sheet7.Cells(final, 6) = Addproduct.TextBox5
Sheet7.Cells(final, 7) = "=IF(ISNA(VLOOKUP(RC[-5],Import!C7:C12,6,0)),"""",(VLOOKUP(RC[-5],Import!C7:C12,6,0)))"
Sheet7.Cells(final, 8) = "=IF(ISNA(VLOOKUP(RC[-6],Export!C7:C12,6,0)),"""",(VLOOKUP(RC[-6],Export!C7:C12,6,0)))"
Sheet7.Cells(final, 9) = "=SUM(IF(ISERROR(RC[-2]-RC[-1]),0,RC[-2]-RC[-1]))"
    
Addproduct.TextBox1 = ""
Addproduct.TextBox2 = ""
Addproduct.TextBox3 = ""
Addproduct.TextBox4 = ""
Addproduct.TextBox5 = ""

Savedata.Hide
Addproduct.Hide

End Sub


Private Sub CommandButton2_Click()
Savedata.Hide
End Sub

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 4:47 pm
by liveday
ทำได้แล้วครับ โดยการส่งข้อมูลไปบันทึกที่ Sheet Import และ Export ไหม่ ข้อมูลที่ Sheet Inventory Cell G กับ H ถึงขึ้นนะครับ ทีนี้ถ้าเราไปดับเบิ้ลคลิ้กที่ Sheet Inventory Cell G กับ H ข้อมูลที่ Cell ก็หายไปอีกครับ ผมคิดว่าน่าจะเกิดจาก Format ไม่เหมือนกันจึงทำให้สูตรคำนวนไม่ได้ จะรบกวนถามอาจารย์ แก้ไขอย่างไรดีครับ ขอบคุณมากครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 7:16 pm
by snasui
:D แนบไฟล์ล่าสุดมาพร้อมกับอธิบายเซลล์ที่เป็นปัญหาครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 8:34 pm
by liveday
เรียนอาจารย์
เมื่อใส่ข้อมูลที่ User form (Addproduct) ที่ Sheet FormIn ข้อมูลจะไปอยู่ที่ Sheet Inventory Sheet Inventory ที่ Cell G,H,I ที่ผมใส่ข้อมูลไว้ครับ

Code: Select all

Sheet7.Cells(final, 7) = "=IF(ISNA(VLOOKUP(RC[-5],Import!C7:C12,6,0)),"""",(VLOOKUP(RC[-5],Import!C7:C12,6,0)))"
Sheet7.Cells(final, 8) = "=IF(ISNA(VLOOKUP(RC[-6],Export!C7:C12,6,0)),"""",(VLOOKUP(RC[-6],Export!C7:C12,6,0)))"
Sheet7.Cells(final, 9) = "=SUM(IF(ISERROR(RC[-2]-RC[-1]),0,RC[-2]-RC[-1]))"
ข้อมูลบันทึกถูกต้องครับ แต่สูตร Vlookup ไม่ทำงาน แต่หากผมไปดับเบิ้ลคลิ้กที่ Cell B สูตร Vlookup ที่ Cell G,H ถึงทำงานครับ แต่ Cell I

Code: Select all

=SUM(IF(ISERROR(G2-H2),0,G2-H2))
ก็ยังไม่คำนวณยังคงแสดงค่า 0 อยู่ครับ จะต้องปรับสูตร หรือแก้ไขอย่างไรครับ ขอบคุณครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 9:39 pm
by snasui
:D ในเครื่องผมพบว่าทำงานตามปกติครับ

หากยังเป็นปัญหากรุณาเขียนลำดับขั้นตอนการทำสอบพร้อมค่าทดสอบมาด้วยครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 9:50 pm
by liveday
เรียนอาจารย์ รบกวนอาจารย์ช่วยดู Sheet Inventory Cell i (Total) สูตรยังไม่คำนวณให้ครับ ถ้า Import แสดงค่าเป็น 1 Cell i (Total) ต้องแสดงผลเป็น 1 ครับ ถ้า Export Cell H แสดงเป็น 1ต้องลบกับ Cell Import cell G ต้องเป็นค่า 0 ครับ และสูตรที่ใช้คำนวณครับ

Code: Select all

=SUM(IF(ISERROR(G2-H2),0,G2-H2))
อ้างอิงจากไฟล์ไฟล์ตัวอย่างเดิมครับ ขอบคุณครับ

Re: หาผลลัพท์ที่มาจาก VLOOKUP

Posted: Wed Jul 11, 2018 10:15 pm
by snasui
:D เปลี่ยนสูตรที่ H2 เป็นด้านล่างครับ

=IF(ISNA(VLOOKUP(B2,Export!$G:$L,6,0)),0,(VLOOKUP(B2,Export!$G:$L,6,0)))

หากจะใช้คำนวณต่อจะต้องไม่ให้คืนค่าในสูตรเป็นค่าว่าง จะต้องคำนึงถึงเรื่องนี้เสมอไปทุก ๆ สูตรครับ