:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#1

Post by parakorn »

สวัสดีครับอาจารย์
จากไฟล์ที่แนบ ต้องการ ผลลัพท์ ที่ Sheet "Database" ตั้งแต่แต่ D5:O5,D9:O9 และ D13:O13
โดยดึงข้อมูลจาก Sheet "Home" Range B11:B20,D11:D20,F11:F20 และ H11:H20
โดยต้องการผลลัพท์ ตามตัวอย่างที่ กรอกไว้ครับ

ขอรบกวนด้วยครับผม
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#2

Post 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
จากนั้นคัดลอกไปยังเซลล์ที่เกี่ยวข้องครับ
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#3

Post by parakorn »

ขอบคุณครับ ♥
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#4

Post by parakorn »

ขอบคุณครับ
ขอถามเพิ่มในส่วนผลลัพท์ Sheet"Database" D17:O17
โดยมีเงื่อนไขคือ ที่ Sheet"Home" ที่ Cell F5 ต้องมีค่ามากว่า 0 และ ที่ F11:F20 ต้องมี "ป้ายขายสดหน้าร้าน"
รบกวนเพิ่มเติมด้วยครับ

ปล.ขออภัยที่ไม่สามารถแนบไฟล์ได้ครับ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#5

Post 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 ว่า "ป้ายขายสดหน้าร้าน" (ไม่ต้องใส่อัญประกาศนะครับ)
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#6

Post by parakorn »

ขอบคุณครับ :thup:
ขอถามต่อเลยนะครับ
จากไฟล์ที่แนบ ต้องการเพิ่มโค้ดตรวจสอบความถูกต้อง ดังนี้ครับ
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
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#7

Post by bank9597 »

ผมขอแนะนำนิดนึงครับ ถ้าหากจะใช้โค๊ด ควร (ต้อง) ใช้ภาษาอังกฤษเท่านั้นครับ ทั้งชื่อชีท ชื่อฟังก์ชั่น

ลองแก้ตามที่ผมบอกก่อนครับ แล้วลองทดสอบโค๊ดใหม่
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#8

Post by parakorn »

แก้เป็นภาษาอังกฤษทั้งหมดแล้วครับ ยัง error ครับผม
รบกวนด้วยนะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#9

Post 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 ออกนะครับ
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#10

Post by parakorn »

ได้แล้วครับ ขอรบกวนสอบถามต่อเลยนะครับ
จากไฟล์แนบ ที่ Sheet"Blue" เป็นขอมูลที่ถูกถอดสูตรออก
ทำให้ Cell ที่ผม Hilight ไม่ใช่ Blank ทำให้ ผมไม่สามารถ
นำข้อมูล Import เข้าโปรแกรมพิมพ์ป้ายราคาได้
ผมจึงขอรบกวน ขอวิธีเลือกข้อมูล เฉพาะที่ผม Hilight
เพื่อทำการ Delete ให้ Cell กลายเป็น Blank

ขอความกรุณาด้วยนะครับ.
You do not have the required permissions to view the files attached to this post.
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#11

Post 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
User avatar
parakorn
Gold
Gold
Posts: 1223
Joined: Thu Mar 14, 2013 9:41 am
Location: Central Chaengwattana[Tops]
Excel Ver: 365
Contact:

Re: ดึงข้อมูลตามเงื่อนไขจาก แนวดิ่ง เป็นแนวนอน

#12

Post by parakorn »

ขอบคุณครับผม ♥
Post Reply