: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

หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Totem
Silver
Silver
Posts: 640
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#1

Post by Totem »

:D เรียนอาจารย์และเพื่อนสมาชิก

ต้องการให้แผนกต่าง ๆ คือช่อง I3:I12
หาข้อมูลจากช่อง A2:F22 ไปแสดงให้ตรงกับสิ่งที่ต้องการ
เช่น เมื่อมีสินค้า Q ช่อง H3 คำตอบที่ได้ในช่อง I3 คือ แผนก A

ขอบคุณครับ
หาข้อมูลหลายคอลัมน์.xlsx
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 »

ที่ I3 ลองคีย์แบบนี้ครับ

=IFERROR(INDEX($A$2:$F$20,SMALL(IF(ISNUMBER(SEARCH(H3,$A$2:$F$20)),ROW($A$2:$F$20)-ROW($A$2)+1),1),SMALL(IF(ISNUMBER(SEARCH(H3,$A$2:$F$20)),COLUMN($A$2:$F$20)-COLUMN($A$2)+1),1)+1),"")

Ctrl+Shift+Enter --> แล้วคัดลอกลงครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#3

Post by snasui »

:D อีกตัวอย่างสูตรครับ เซลล์ I3 คีย์

=INDEX($A$2:$F$22,MATCH(2,1/((MMULT(COLUMN($A$2:$F$2)^0,--TRANSPOSE($A$2:$F$22=H3)))>0)),MATCH(2,1/((MMULT(TRANSPOSE(ROW($A$2:$A$22)^0),--($A$2:$F$22=H3)))>0))+1)

Ctrl+Shift+Enter > Copy ลงด้านล่าง
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#4

Post by DhitiBank »

:o โอ้ เมทริกซ์ ขอบคุณครับ
Totem
Silver
Silver
Posts: 640
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#5

Post by Totem »

:D ขอบคุณครับ

ทั้ง2สูตรได้ตามที่ต้องการครับ
ขอคำอธิบายตรงสูตรนี้ครับ ยังไม่ค่อยเข้าใจครับ
1/((MMULT(COLUMN($A$2:$F$2)^0,--TRANSPOSE($A$2:$F$22=H3)))>0)
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#6

Post by snasui »

:D Mmult เป็นการหา Matrix ของผลคูณของ 2 Array ซึ่งจากสูตรที่ผมเขียนด้านบนเป็นการประยุกต์ใช้อีกทอดหนึ่งจึงทำความเข้าใจได้ยากมาก

ผลคูณของ 2 Array เป็นการนำ Array1 * Array2 โดยมีข้อกำหนดคือ Array2 จะต้องมีจำนวนบรรทัดเท่ากับจำนวนคอลัมน์ของ Array1

ยกตัวอย่างตามด้านล่าง

Code: Select all

   A B
1  1 2
2
3  4 5
4  6 7
Array1 คือ {1,2} และ Array2 คือ {4,5;6,7} :arl: สังเกตเครื่องหมาย ; ว่าคั่นเพื่อแสดงว่าขึ้นบรรทัดใหม่

เมื่อเขียน Mmult เช่น =Sum(Mmult({1,2},{4,5;6,7})) ผลรวมจะได้ 35 โดยมีลักษณะการคูณคือ =1*4+1*5+2*6+2*7

แต่หากนำ Transpose มาเปลี่ยนแกนของ Array โดยคีย์เป็น =Sum(Mmult({1,2},Transpose({4,5;6,7}))) สูตรจะกลายเป็น =Sum(Mmult({1,2},{4,6;5,7})) ผลลัพธ์จะได้ 34 โดยมีลักษณะการคูณคือ =1*4+1*6+2*5+2*7

ประเด็นสำคัญคือการเปลี่ยนแกนของ Array เพื่อให้แสดงผลในแกนที่เราต้องการ จำเป็นต้องทดสอบ ทดลองด้วยตนเองด้วยพื้นที่ที่มีขนาดใหญ่ขึ้นมาอีกสักเล็กน้อยเพื่อจะได้เห็นภาพ สำหรับตัวอย่างนี้เป็นตัวอย่างเล็ก ๆ เพื่อให้เห็นลักษณะการทำงานเท่านั้น

ในส่วนของการนำผลของ Array ไปเทียบกับค่าใด ๆ เช่น =Mmult({1,2},Transpose({4,5;6,7})>0 ก็เพื่อให้แสดงเป็น True, False โดยหากเข้าเงื่อนไขก็จะแสดงเป็น True หากไม่เข้าเงื่อนไขก็จะแสดงเป็น False ซึ่งจะมีลักษณะเป็น ={True,False,False...} เป็นต้น

เมื่อนำไปหารเลข 1 ก็จะได้เป็น 1/{True,False,False...} โดยค่าที่เป็น True จะแสดงผลลัพธ์เป็น 1 ส่วนค่าที่เป็น False จะแสดงผลลัพธ์เป็น #Div/0! ซึ่งจะได้เป็น {1,#Div/0!,#Div/0!...} เช่นนี้เป็นต้น

สามารถศึกษา Mmult ได้จาก Link นี้ครับ Mmult
Totem
Silver
Silver
Posts: 640
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#7

Post by Totem »

:D ขอบคุณครับ

^ = ตัวยกกำลังใช่ไหมครับ ^0 = ยกกำลัง 0 เพื่อ :?: ครับ

ก่อนหน้านี้เข้าไปดูตามlink ที่อาจารย์ให้มาแล้ว ยังไม่เข้าใจ
ได้อาจารย์อธิบายเพิ่ม พอเข้าใจ จะลองไปศึกษาดู เวลาจะปรับใช้เข้าใจยากครับ :roll: :cry: :cp:
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#8

Post by snasui »

Totem wrote:^ = ตัวยกกำลังใช่ไหมครับ ^0 = ยกกำลัง 0 เพื่อ ครับ
:D ลองคีย์ค่าใด ๆ ที่ไม่ใช่ 0 แล้วตามด้วย ^0 แล้วสังเกตดูว่าได้ค่าใด นั่นคือคำตอบครับ :mrgreen:
Totem
Silver
Silver
Posts: 640
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#9

Post by Totem »

snasui wrote:
Totem wrote:^ = ตัวยกกำลังใช่ไหมครับ ^0 = ยกกำลัง 0 เพื่อ ครับ
:D ลองคีย์ค่าใด ๆ ที่ไม่ใช่ 0 แล้วตามด้วย ^0 แล้วสังเกตดูว่าได้ค่าใด นั่นคือคำตอบครับ :mrgreen:
:D ขอบคุณครับ :idea: :D
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#10

Post by DhitiBank »

สาเหตุที่เลขใดๆ ยกกำลัง 0 แล้วเท่ากับ 1 ครับ

ปกติแล้วเลขฐานสิบใดๆ จะมีเลขยกกำลังอยู่แล้วคือเลข 1 ครับ เช่น
2 = 2^1
จะเรียกเลข 2 ว่า "เลขฐาน" และเรียกเลข 1 ว่า "เลขชี้กำลัง"

:arrow: หากเลขยกกำลังที่มีเลขฐานเท่ากัน มาคูณกัน เราสามารถเอาเฉพาะเลขชี้กำลังมาบวกกันได้เลย เช่น
power1.jpg

:arrow: ในทางตรงกันข้าม หากเลขยกกำลังที่มีเลขฐานเท่ากัน มาหารกัน เราจะเอาเลขชี้กำลังของตัวตั้ง มาหักออกด้วยเลขชี้กำลังของตัวหาร เช่น
power2.jpg

แต่หากเลขฐานทั้งตัวตั้งและตัวหาร ต่างมีเลขชี้กำลังเท่ากัน เราชินกันอยู่แล้วว่ามันต้องเท่ากับ 1 แต่พอมาเขียนในรูปเลขยกกำลัง อาจดูแปลกตา เช่น
power3.jpg

ดังนั้น สรุปได้ว่า เลขใดๆ เมื่อเอามายกกำลัง 0 จะมีค่าเท่ากับ 1 เสมอครับ :)

ส่วนเรื่องเมทริกซ์ ดังที่อาจารย์อธิบายครับ เมื่อเรามีสิ่งที่ต้องการค้นหากระจายอยู่ในกลุ่มข้อมูลที่มีหลายแถวหลายคอลัมน์ การคูณเมทริกซ์ด้วยเมทริกซ์ (ลักษณะแถวและคอลัมน์ใน excel จะคล้ายเมทริกซ์ หรือจะว่ามันเป็นเมทริกซ์รูปแบบหนึ่งก็ได้ เมทริกซ์คือชุดข้อมูลที่อยู่ในรูปแถว x คอลัมน์) จะสามารถช่วยรวบให้ข้อมูลนั้นเหลือเพียง 1 แถว หรือ 1 คอลัมน์ได้ คร่าวๆ ก็ประมาณนี้ครับ

จบชั่วโมงคณิตศาสตร์...
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 »

ยกเว้นเลข 0 ครับ ลืมใส่ข้อยกเว้นไป
0^0 ไม่เท่ากับ 1 และไม่เท่ากับ 0 แต่เท่ากับ #DIV/0! :mrgreen:
Totem
Silver
Silver
Posts: 640
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#12

Post by Totem »

:D ขอบคุณครับ ได้ข้อมูลความรู้เพิ่มเติมดีมากเลยครับ เรืยนมานานแทบจะลืมไปหมดแล้ว ต้องฟื้นความทรงจำกันใหม่เลยทีเดียว :lol: :mrgreen:
jelelite
Member
Member
Posts: 40
Joined: Thu Aug 06, 2015 7:37 pm

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#13

Post by jelelite »

อีกสูตรที่ผมคิดได้ที่เซลล์ I3 คีย์
=IFERROR(INDEX($B$2:$B$22,MATCH($H3,$A$2:$A$22,0)),IFERROR(INDEX($D$2:$D$22,MATCH($H3,$C$2:$C$22,0)),IFERROR(INDEX($F$2:$F$22,MATCH($H3,$E$2:$E$22,0)),"")))

แล้ว Copy ลงด้านล่างครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#14

Post by snasui »

:D สูตรที่ยืดหยุ่นจะไม่ระบุคอลัมน์ไว้ตายตัวเช่นนั้นครับ หากมีการเพิ่มขึ้นเป็นหลายคอลัมน์สูตรนั้นจะไม่เพียงพอครับ อย่างไรก็ตามถือเป็นความคิดที่ดีที่พยายามหาแนวทางในการแก้ปัญหาเพิ่มเติมให้แตกต่างไปจากเดิมครับ :thup:
jelelite
Member
Member
Posts: 40
Joined: Thu Aug 06, 2015 7:37 pm

Re: หาข้อมูลหลายคอลัมน์ไปแสดงให้ตรงกับสิ่งที่ต้องการ

#15

Post by jelelite »

ขอบคุณครับอาจารย์
Post Reply