Page 1 of 1
ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Mon Oct 12, 2015 12:39 pm
by parakorn
สวัสดีครับอาจารย์
จากไฟล์ที่แนบ ต้องการ ผลลัพท์ ที่ Sheet "Database" ตั้งแต่แต่ D5:O5,D9:O9 และ D13:O13
โดยดึงข้อมูลจาก Sheet "Home" Range B11:B20,D11:D20,F11:F20 และ H11:H20
โดยต้องการผลลัพท์ ตามตัวอย่างที่ กรอกไว้ครับ
ขอรบกวนด้วยครับผม
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Mon Oct 12, 2015 10:38 pm
by DhitiBank
ลองแบบนี้ครับ
ที่ D5 คีย์
=IFERROR(INDEX(INDEX(Home!$B$11:$D$20,0,MATCH(LEFT(D4,4),{"Step","","Pric"},0)),SMALL(IF(LOOKUP(CHAR(255),$A$3:$A3)=Home!$F$11:$F$20,ROW(Home!$F$11:$F$20)-ROW(Home!$F$11)+1),INT((COLUMNS($D5:D5)-1)/2)+1)),"")
แล้วกด Ctrl+Shift ค้างไว้ แล้ว Enter
จากนั้นคัดลอกไปยังเซลล์ที่เกี่ยวข้องครับ
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Tue Oct 13, 2015 11:10 am
by parakorn
ขอบคุณครับ ♥
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Tue Oct 13, 2015 2:21 pm
by parakorn
ขอบคุณครับ
ขอถามเพิ่มในส่วนผลลัพท์ Sheet"Database" D17:O17
โดยมีเงื่อนไขคือ ที่ Sheet"Home" ที่ Cell F5 ต้องมีค่ามากว่า 0 และ ที่ F11:F20 ต้องมี "ป้ายขายสดหน้าร้าน"
รบกวนเพิ่มเติมด้วยครับ
ปล.ขออภัยที่ไม่สามารถแนบไฟล์ได้ครับ
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Tue Oct 13, 2015 11:27 pm
by DhitiBank
ลองปรับสูตรที่ D17 ครับ
=IFERROR(IF(Home!$F$5>0,INDEX(INDEX(Home!$B$11:$D$20,0,MATCH(LEFT(D16,4),{"Step","","Pric"},0)),SMALL(IF(LOOKUP(CHAR(255),$A$3:$A15)=Home!$F$11:$F$20,ROW(Home!$F$11:$F$20)-ROW(Home!$F$11)+1),INT((COLUMNS($D17:D17)-1)/2)+1)),""),"")
Ctrl+Shift+Enter -->คัดลอกไปทางขวา
เสร็จแล้วคีย์ในเซลล์ A15 ว่า "ป้ายขายสดหน้าร้าน" (ไม่ต้องใส่อัญประกาศนะครับ)
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Fri Oct 16, 2015 11:18 am
by parakorn
ขอบคุณครับ
ขอถามต่อเลยนะครับ
จากไฟล์ที่แนบ ต้องการเพิ่มโค้ดตรวจสอบความถูกต้อง ดังนี้ครับ
Sheet "Home" ที่ปุ่ม "ป้ายขายสดหน้าร้าน" ต้องการให้สามารถบันทึกข้อมูล
เมื่อมีข้อมูลราคาที่ Sheet "Database" Range D13 ครับ โค้ดที่ผมเขียนขึ้นมัน Error ต้องปรับอย่างไรครับ
Code: Select all
Sub Save»éÒ¢ÒÂʴ˹éÒÃéÒ¹()
' Save»éÒ¢ÒÂʴ˹éÒÃéÒ¹ Macro
With SheetDatabase
If .Range("D13") = "" Then
MsgBox "Your data not complete. Please verify and try again."
Exit Sub
End If
End With
A = MsgBox("µéͧ¡Òúѹ·Ö¡", vbCritical + vbYesNo)
If A = vbYes Then
For i = 1 To 1
Application.Goto Reference:="msrec»éÒ¢ÒÂʴ˹éÒÃéÒ¹"
Selection.Copy
Application.Goto Reference:="uldt»éÒ¢ÒÂʴ˹éÒÃéÒ¹"
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Home").Select
Range("B5").Select
Selection.ClearContents
Next i
End If
End Sub
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Fri Oct 16, 2015 1:20 pm
by bank9597
ผมขอแนะนำนิดนึงครับ ถ้าหากจะใช้โค๊ด ควร (ต้อง) ใช้ภาษาอังกฤษเท่านั้นครับ ทั้งชื่อชีท ชื่อฟังก์ชั่น
ลองแก้ตามที่ผมบอกก่อนครับ แล้วลองทดสอบโค๊ดใหม่
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Wed Oct 21, 2015 6:43 pm
by parakorn
แก้เป็นภาษาอังกฤษทั้งหมดแล้วครับ ยัง error ครับผม
รบกวนด้วยนะครับ
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Fri Oct 23, 2015 4:40 pm
by DhitiBank
ลองปรับโค้ดเป็นแบบนี้ครับ
Code: Select all
Sub SaveBlue()
' SaveBlue Macro
With Sheets("Database")
If .Range("D13").Value = "" Then
MsgBox "Your data not complete. Please verify and try again."
Exit Sub
End If
End With
A = MsgBox("Are you sure?", vbCritical + vbYesNo)
If A = vbYes Then
Application.Goto Reference:="msrecBlue"
Selection.Copy
Application.Goto Reference:="uldtBlue"
ActiveSheet.Range("a" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Home").Select
Range("B5").Select
Selection.ClearContents
End If
End Sub
ไม่ทราบว่ามีการทำงานในลักษณะวนซ้ำๆ หรือเปล่าครับ หากไม่มี ผมขอเอา
For ... Next ออกนะครับ
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Mon Oct 26, 2015 6:52 pm
by parakorn
ได้แล้วครับ ขอรบกวนสอบถามต่อเลยนะครับ
จากไฟล์แนบ ที่ Sheet"Blue" เป็นขอมูลที่ถูกถอดสูตรออก
ทำให้ Cell ที่ผม Hilight ไม่ใช่ Blank ทำให้ ผมไม่สามารถ
นำข้อมูล Import เข้าโปรแกรมพิมพ์ป้ายราคาได้
ผมจึงขอรบกวน ขอวิธีเลือกข้อมูล เฉพาะที่ผม Hilight
เพื่อทำการ Delete ให้ Cell กลายเป็น Blank
ขอความกรุณาด้วยนะครับ.
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Mon Oct 26, 2015 8:26 pm
by DhitiBank
ลองแบบนี้ครับ โค้ดด้านล่างนี้จะลบค่าในเซลล์ที่แต่เดิมเป็น "" ออกด้วยการ Clear เสร็จแล้วจะเลือกช่วง uldtBlue เฉพาะเซลล์ที่มีข้อมูลอยู่ครับ
Code: Select all
Sub ChooseBlueReccord()
'
' Macro1 Macro
Dim r As Range, rBlue As Range
With ActiveSheet
Set rBlue = .Range("dtblue")
For Each r In rBlue
If Len(r.Value) < 1 Then r.Clear
Next r
Set rBlue = .Range("dtblue").SpecialCells(xlCellTypeConstants)
End With
rBlue.Select
End Sub
Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน
Posted: Sun Nov 08, 2015 7:33 am
by parakorn
ขอบคุณครับผม ♥