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 สูตร
ไปวางที่ 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

แนบไฟล์ล่าสุดมาพร้อมกับอธิบายเซลล์ที่เป็นปัญหาครับ
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
ก็ยังไม่คำนวณยังคงแสดงค่า 0 อยู่ครับ จะต้องปรับสูตร หรือแก้ไขอย่างไรครับ ขอบคุณครับ
Re: หาผลลัพท์ที่มาจาก VLOOKUP
Posted: Wed Jul 11, 2018 9:39 pm
by snasui

ในเครื่องผมพบว่าทำงานตามปกติครับ
หากยังเป็นปัญหากรุณาเขียนลำดับขั้นตอนการทำสอบพร้อมค่าทดสอบมาด้วยครับ
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 ครับ และสูตรที่ใช้คำนวณครับ
อ้างอิงจากไฟล์ไฟล์ตัวอย่างเดิมครับ ขอบคุณครับ
Re: หาผลลัพท์ที่มาจาก VLOOKUP
Posted: Wed Jul 11, 2018 10:15 pm
by snasui

เปลี่ยนสูตรที่ H2 เป็นด้านล่างครับ
=IF(ISNA(VLOOKUP(B2,Export!$G:$L,6,0)),0,(VLOOKUP(B2,Export!$G:$L,6,0)))
หากจะใช้คำนวณต่อจะต้องไม่ให้คืนค่าในสูตรเป็นค่าว่าง จะต้องคำนึงถึงเรื่องนี้เสมอไปทุก ๆ สูตรครับ