Page 1 of 1
ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 2:42 pm
by jakraphong
ผมใช้งานvlookup ในการหารายการสินค้าที่สั่งซื้อ
ที่นี้ผมต้องการให้ระบบแสดงทั้งหมดนะครับที่สูตรพบ มิใช่แสดงแต่ค่าแรกที่พบครับ
เช่นโคด a001_220ml มีการสั่งซื้อหลายครั้งใน sheet ค้างรับ19.04 แต่ระบบจะแสดงแค่ค่าแรกเท่านั้น
ต้องทำเช่นไรครับ
ขอขอบคุณมากๆครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 4:07 pm
by snasui

ควรแจ้งชีทแจ้งเซลล์ที่ต้องการคำตอบมาด้วยเพื่อจะได้เข้าถึงข้อมูลโดยไว สำหรับที่ถามมาลองตามด้านล่างครับ
ที่ชีท MOPbrand19.4.12
- เซลล์ H5 คีย์
=IFERROR(INDEX(ONhand19.4!$D$1:$D$2176,SMALL(IF(C5=ONhand19.4!$A$1:$A$2176,ROW(ONhand19.4!$A$1:$A$2176)-ROW(ONhand19.4!$A$1)+1),COUNTIF(C$5:C5,C5))),0)
Ctrl+Shift+Enter > Copy ลงด้านล่าง
- เซลล์ I5 คีย์
=IFERROR(INDEX(ค้างรับ19.04!$D$2:$D$895,SMALL(IF(C5=ค้างรับ19.04!$A$2:$A$895,ROW(ค้างรับ19.04!$A$2:$A$895)-ROW(ค้างรับ19.04!$A$2)+1),COUNTIF(C$5:C5,C5))),0)
Ctrl+Shift+Enter > Copy ลงด้านล่าง
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 5:40 pm
by jakraphong
ครับผม
sheet ที่ต้องใช้งานคือ MOPbrand19.4.12 ครับ ขออภัยครับ
ส่วนสูตรที่ให้มาคือ เรียกเป็นทางการว่าอย่างไรครับ
และผมสามารถนำไปใช้กับชีทอื่นที่ต้องการข้อมูลเหมือนๆกันได้ไหมครับ
ขอบคุณอีกครั้งครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 5:57 pm
by jakraphong
เพิ่มเติมส่วนที่ถามครับ
คือใน sheet MOPbrand19.4.12นั้น
จากแถว C คือ Item code สินค้าครับ
ในกรณีนี้คือว่า ผมต้องการให้สูตรแสดง
สินค้า โคด A001_220ml ( C5 ) ว่ามีรายการค้างรับจาก sheet ค้างรับ19.04 กี่รายการ
โดยให้แสดงรายการที่พบทั้งหมดใน sheet MOPbrand19.4.12 ที่แถว I5 ครับ
ขอบคุณครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 6:19 pm
by snasui
jakraphong wrote:
ส่วนสูตรที่ให้มาคือ เรียกเป็นทางการว่าอย่างไรครับ
และผมสามารถนำไปใช้กับชีทอื่นที่ต้องการข้อมูลเหมือนๆกันได้ไหมครับ
ขอบคุณอีกครั้งครับ
เราสามารถนำสูตรไปใช้กับชีทอื่นที่ต้องการข้อมูลเหมือน ๆ กันได้ครับ สำหรับการเรียกชุดของสูตรเรียกตามความมุ่งหมายครับ ไม่มีชื่อเฉพาะเจาะจง การเขียนสูตรขึ้นอยู่กับวัตถุประสงค์ ไม่ได้มีรูปแบบตายตัวว่าจำเป็นจะต้องเขียนอย่างนี้เท่านั้น เราสามารถผสมสูตรมาใช้ได้เองเพื่อให้ได้คำตอบตามต้องการ ดังนั้น การเขียนสูตรจึงขึ้นกับความสามารถและจินตนาการ
สำหรับสูตรนี้สามารถเรียกได้ว่า "สูตรสำหรับค้นหาข้อมูลทุกรายการที่สัมพันธ์กับค่าใดค่าหนึ่ง" ครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 6:22 pm
by snasui
jakraphong wrote:เพิ่มเติมส่วนที่ถามครับ
คือใน sheet MOPbrand19.4.12นั้น
จากแถว C คือ Item code สินค้าครับ
ในกรณีนี้คือว่า ผมต้องการให้สูตรแสดง
สินค้า โคด A001_220ml ( C5 ) ว่ามีรายการค้างรับจาก sheet ค้างรับ19.04 กี่รายการ
โดยให้แสดงรายการที่พบทั้งหมดใน sheet MOPbrand19.4.12 ที่แถว I5 ครับ
ขอบคุณครับ
ช่วยแนบไฟล์มาใหม่
แสดงตัวอย่างคำตอบที่ต้องการมาด้วย จะได้คำนวณเปรียบเทียบได้ครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 6:38 pm
by jakraphong
snasui wrote:jakraphong wrote:
ส่วนสูตรที่ให้มาคือ เรียกเป็นทางการว่าอย่างไรครับ
และผมสามารถนำไปใช้กับชีทอื่นที่ต้องการข้อมูลเหมือนๆกันได้ไหมครับ
ขอบคุณอีกครั้งครับ
เราสามารถนำสูตรไปใช้กับชีทอื่นที่ต้องการข้อมูลเหมือน ๆ กันได้ครับ สำหรับการเรียกชุดของสูตรเรียกตามความมุ่งหมายครับ ไม่มีชื่อเฉพาะเจาะจง การเขียนสูตรขึ้นอยู่กับวัตถุประสงค์ ไม่ได้มีรูปแบบตายตัวว่าจำเป็นจะต้องเขียนอย่างนี้เท่านั้น เราสามารถผสมสูตรมาใช้ได้เองเพื่อให้ได้คำตอบตามต้องการ ดังนั้น การเขียนสูตรจึงขึ้นกับความสามารถและจินตนาการ
สำหรับสูตรนี้สามารถเรียกได้ว่า "สูตรสำหรับค้นหาข้อมูลทุกรายการที่สัมพันธ์กับค่าใดค่าหนึ่ง" ครับ
ขอบคุณมากเลยครับ
ยังไงรบกวนขอในส่วนที่ถามเพิ่มเติมด้วยนะครับ
ใส่รายละเอียดคำถามเพิ่มเติมอยู่ในไฟล์(ช่อง L5 ครับ)แนบครับ
ขอขอบคุณอีกครั้งครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 6:59 pm
by snasui
อ้างถึง item code a001_220ml ( C5 ) ซึ่งมีรายการค้างรับจาก sheet "ค้างรับ19.04" ในส่วนของโคด a001_220ml หลายจำนวน ซึ่งผมต้องการให้สูตรเรียกข้อมูลมาทั้งหมดมาแสดงอยู่ในช่อง(แสดงในช่อง I5 )เดียวกัน (อาจคั่นแต่ละข้อมูลด้วย(,)) ต้องเขียนสูตรอย่างไรแนะนำด้วยครับ
ควรเขียนข้อมูลนี้ลงในฟอรัมด้วยครับ สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA หรือใช้ Add-ins เช่น Morefunc สามารถดาวน์โหลดได้จาก Link นี้
viewtopic.php?f=9&t=9 สามารถติดตั้งได้ใน Excel 2003, 2007
แต่ไม่สามารถติดตั้งได้ใน Excel 2010
หากติดตั้ง Morefunc เรียบร้อยแล้วสามารถเขียนสูตรที่ I5 ได้เป็น
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MCONCAT(IF(C5=ค้างรับ19.04!$A$3:$A$896,ค้างรับ19.04!$D$3:$D$896),", "),"FALSE, ",""),", FALSE",""),"FALSE","")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
กรณีผมถามถึงตัวอย่าง ควรกรอกตัวอย่างด้วยมือเพื่อแสดงค่าที่ถูกต้องมาครับ ผมจะได้เปรียบเทียบได้ว่าควรจะใช้สูตรในลักษณะใดเพื่อให้ตรงกับที่ต้องการ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 7:04 pm
by jakraphong
snasui wrote:
อ้างถึง item code a001_220ml ( C5 ) ซึ่งมีรายการค้างรับจาก sheet "ค้างรับ19.04" ในส่วนของโคด a001_220ml หลายจำนวน ซึ่งผมต้องการให้สูตรเรียกข้อมูลมาทั้งหมดมาแสดงอยู่ในช่อง(แสดงในช่อง I5 )เดียวกัน (อาจคั่นแต่ละข้อมูลด้วย(,)) ต้องเขียนสูตรอย่างไรแนะนำด้วยครับ
ควรเขียนข้อมูลนี้ลงในฟอรัมด้วยครับ สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA หรือใช้ Add-ins เช่น Morefunc สามารถดาวน์โหลดได้จาก Link นี้
viewtopic.php?f=9&t=9 สามารถติดตั้งได้ใน Excel 2003, 2007
แต่ไม่สามารถติดตั้งได้ใน Excel 2010
หากติดตั้ง Morefunc เรียบร้อยแล้วสามารถเขียนสูตรที่ I5 ได้เป็น
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MCONCAT(IF(C5=ค้างรับ19.04!$A$3:$A$896,ค้างรับ19.04!$D$3:$D$896),", "),"FALSE, ",""),", FALSE",""),"FALSE","")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
กรณีผมถามถึงตัวอย่าง ควรกรอกตัวอย่างด้วยมือเพื่อแสดงค่าที่ถูกต้องมาครับ ผมจะได้เปรียบเทียบได้ว่าควรจะใช้สูตรในลักษณะใดเพื่อให้ตรงกับที่ต้องการ
โอ...ขอบพระคุณอย่างสูงสำหรับคำแนะนำนะครับ
เดี๋ยวผมลองโหลด แล้วลองดูครับ
ได้ความอย่างไรจะแจ้งให้ทราบครับ
ขอขอบคุณอีกครั้งครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 10, 2012 7:18 pm
by jakraphong
ได้แล้วครับ
ข้าน้อยขอคาราวะ ด้วยใจจริง
ขอบคุณครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 5:38 pm
by jakraphong
snasui wrote:
อ้างถึง item code a001_220ml ( C5 ) ซึ่งมีรายการค้างรับจาก sheet "ค้างรับ19.04" ในส่วนของโคด a001_220ml หลายจำนวน ซึ่งผมต้องการให้สูตรเรียกข้อมูลมาทั้งหมดมาแสดงอยู่ในช่อง(แสดงในช่อง I5 )เดียวกัน (อาจคั่นแต่ละข้อมูลด้วย(,)) ต้องเขียนสูตรอย่างไรแนะนำด้วยครับ
ควรเขียนข้อมูลนี้ลงในฟอรัมด้วยครับ สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA หรือใช้ Add-ins เช่น Morefunc สามารถดาวน์โหลดได้จาก Link นี้
viewtopic.php?f=9&t=9 สามารถติดตั้งได้ใน Excel 2003, 2007
แต่ไม่สามารถติดตั้งได้ใน Excel 2010
หากติดตั้ง Morefunc เรียบร้อยแล้วสามารถเขียนสูตรที่ I5 ได้เป็น
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MCONCAT(IF(C5=ค้างรับ19.04!$A$3:$A$896,ค้างรับ19.04!$D$3:$D$896),", "),"FALSE, ",""),", FALSE",""),"FALSE","")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
กรณีผมถามถึงตัวอย่าง ควรกรอกตัวอย่างด้วยมือเพื่อแสดงค่าที่ถูกต้องมาครับ ผมจะได้เปรียบเทียบได้ว่าควรจะใช้สูตรในลักษณะใดเพื่อให้ตรงกับที่ต้องการ
สวัสดีครับ ขอเข้ามารบกวนอีกครั้งครับ ตอนนี้องค์กรผมเปลี่ยน ใช้ excel2010 แล้วจะใช้สูตรแบบไหนดีครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 5:58 pm
by snasui

ตอบไปแต่ครั้งนั้นแล้วเช่นกันครับ
snasui wrote:สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA
กรณีใช้ VBA ให้เขียนมาก่อนตามกฎข้อ 5 ด้านบนครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 6:00 pm
by jakraphong
snasui wrote:
ตอบไปแต่ครั้งนั้นแล้วเช่นกันครับ
snasui wrote:สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA
กรณีใช้ VBA ให้เขียนมาก่อนตามกฎข้อ 5 ด้านบนครับ
ขอบคุณมากๆครับเดี๋ยวผมขอไปตั้งหัวข้อใหม่นะครับ
ต้องการให้แสดงข้อมูลการซื้อสินค้ารายการที่ซื้อซ้ำๆมาอยู่ในคอ
Posted: Wed May 22, 2013 6:39 pm
by jakraphong
อาจารย์ครับ
ปัญหานี้อาจารย์เคยแก้ให้แล้วครับ แต่ว่าทางบริษัทได้เปลี่ยนมาใช้ Excel2010 ทำให้สูตรเดิมที่อาจารย์กรุณาแนะนำไม่สามารถใช้ได้
ผมเลยต้องขอมารบกวนอีกครั้งครับ
คำถามครับ
ผมมีข้อมูลการซื้อ ซ้ำๆกันหลายครั้งในตัวสินค้าเดียวกันเช่น
สินค้ารหัส d110_25ml มีการ ขอซื้อ 3 PO
สิ่งที่ต้องการคือ ผมต้องการเลขที่ PO ทั้ง 3 มาโชว์ในคอลัมภ์เดียวกันครับ
ขอถามโดยอ้างจากไฟล์แนบนะครับ
ใน sheet A รหัส D110_25ml (จากแถว B143 ) มีการซื้อทั้งหมด 3 PO ( sheet ค้างรับ17.5 แถวD778-D780 ) เลขที่ PO แสดงที่แถว H778-780
ผมต้องการให้ เลขที่ PO ทั้งหมดของการซื้อ รหัส D110_25ml นี้ คือ POP550900053 POP56030001 POP56050001
แสดงในคอลัมภ์ E143
ตามตัวอย่างที่แนบครับ
ขอความกรุณาด้วยครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 6:51 pm
by snasui

ผมนำโพสต์นี้กลับมารวมไว้ในกระทู้นี้ เนื่องจากว่าเรื่องเดียวควรโพสต์ต่อจากกระทู้เดิม ไม่ควรตั้งกระทู้ใหม่ครับ
กรณีนี้ผมแจ้งแล้วว่าต้องใช้ VBA และต้องเขียนมาก่อน ติดตรงไหนค่อยถามกัน ไม่ได้หมายความว่ากระทู้ใดที่ตอบด้วยสูตรแล้วจะไม่ตอบเป็นอย่างอื่นอีก และไม่ได้หมายความว่าใช้วิธีการแก้ไขเป็นอย่างอื่นแล้วต้องไปตั้งกระทู้ใหม่
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 7:19 pm
by jakraphong
snasui wrote:
ผมนำโพสต์นี้กลับมารวมไว้ในกระทู้นี้ เนื่องจากว่าเรื่องเดียวควรโพสต์ต่อจากกระทู้เดิม ไม่ควรตั้งกระทู้ใหม่ครับ
กรณีนี้ผมแจ้งแล้วว่าต้องใช้ VBA และต้องเขียนมาก่อน ติดตรงไหนค่อยถามกัน ไม่ได้หมายความว่ากระทู้ใดที่ตอบด้วยสูตรแล้วจะไม่ตอบเป็นอย่างอื่นอีก และไม่ได้หมายความว่าใช้วิธีการแก้ไขเป็นอย่างอื่นแล้วต้องไปตั้งกระทู้ใหม่
อาจารย์ครับ ผมต้องขออภัยครับ
ผมไม่มีความรุ็ด้านการเขียน VBA เลยครับ
ได้โปรดช่วยแนะนำด้วยครับ
แบบว่าผมเรียนรู้ด้วยตัวเองแบบครูพักลักจำครับ
ขอขอบคุณอาจารย์ด้วยครับที่ช่วยแนะนำครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Wed May 22, 2013 9:08 pm
by snasui

หากเป็น VBA จำเป็นต้องเขียนมาก่อนทุกกรณี ไม่มียกเว้นครับ
สำหรับการทำเช่นที่ต้องการนี้สามารถใช้สูตรทำได้เช่นกันแต่จะต้องใช้คอลัมน์ช่วยและหากว่าข้อมูลจำนวนมากจะทำให้เกิดการคำนวณนาน ไฟล์จะทำงานช้าเพราะต้องใช้สูตร Array
ลองตามนี้ครับ
- ชีท A เซลล์ F4 คีย์
Code: Select all
=IFERROR(INDEX(ค้างรับ17.5!$H$5:$H$882,SMALL(IF(ค้างรับ17.5!$D$5:$D$882=$B4,ROW(ค้างรับ17.5!$H$5:$H$882)-ROW(ค้างรับ17.5!$H$5)+1),COLUMNS($F4:F4))),"")
Ctrl+Shift+Enter > Copy ไปทางขวาถึง M4 แล้ว Copy ลงด้านล่าง
- ที่เซลล์ E4 คีย์
Code: Select all
=IF(F4="","",LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(F4&","&G4&","&H4&","&I4&","&J4&","&K4&","&L4&","&M4&",",",,,,,",","),",,,,",","),",,,",","),",,",","),SUMPRODUCT(LEN(F4:M4))+COUNTIF(F4:M4,"?*")-1))
Enter < Copy ลงด้านล่าง
Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น
{=YourFormulas(...)
} ปีกกานี้คีย์เข้าไปเองไม่ได้
ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 23, 2013 1:38 pm
by jakraphong
อาจารย์ ขอบคุณมากๆๆๆๆๆครับ
เดี๋ยวผมขอนำไปใช้ ได้ผลอย่างไรผมขอกลับมาแจ้งอีกครั้งครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Thu May 23, 2013 6:54 pm
by jakraphong
ใช้ได้แล้วคร้าบบบบ
ผมขอขอบคุณท่านอาจารย์ มากๆๆๆครับ
Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ
Posted: Fri May 24, 2013 11:42 am
by วังวู ช่ง
snasui wrote:
หากเป็น VBA จำเป็นต้องเขียนมาก่อนทุกกรณี ไม่มียกเว้นครับ
สำหรับการทำเช่นที่ต้องการนี้สามารถใช้สูตรทำได้เช่นกันแต่จะต้องใช้คอลัมน์ช่วยและหากว่าข้อมูลจำนวนมากจะทำให้เกิดการคำนวณนาน ไฟล์จะทำงานช้าเพราะต้องใช้สูตร Array
ลองตามนี้ครับ
- ชีท A เซลล์ F4 คีย์
Code: Select all
=IFERROR(INDEX(ค้างรับ17.5!$H$5:$H$882,SMALL(IF(ค้างรับ17.5!$D$5:$D$882=$B4,ROW(ค้างรับ17.5!$H$5:$H$882)-ROW(ค้างรับ17.5!$H$5)+1),COLUMNS($F4:F4))),"")
Ctrl+Shift+Enter > Copy ไปทางขวาถึง M4 แล้ว Copy ลงด้านล่าง
- ที่เซลล์ E4 คีย์
Code: Select all
=IF(F4="","",LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(F4&","&G4&","&H4&","&I4&","&J4&","&K4&","&L4&","&M4&",",",,,,,",","),",,,,",","),",,,",","),",,",","),SUMPRODUCT(LEN(F4:M4))+COUNTIF(F4:M4,"?*")-1))
Enter < Copy ลงด้านล่าง
Note: Ctrl+Shift+Enter หมายถึงเมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น
{=YourFormulas(...)
} ปีกกานี้คีย์เข้าไปเองไม่ได้
ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
ความรู้ที่ยอดเยี่ยมครับ ขอบคุณมากสำลับเจ้าของกระทู้ และท่านอาจารย์ที่แนะนำสูตรแบบนี้ ผมชอบมากครับ