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
:D ควรแจ้งชีทแจ้งเซลล์ที่ต้องการคำตอบมาด้วยเพื่อจะได้เข้าถึงข้อมูลโดยไว สำหรับที่ถามมาลองตามด้านล่างครับ

ที่ชีท MOPbrand19.4.12
  1. เซลล์ 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 ลงด้านล่าง
  2. เซลล์ 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
:lol:
อ้างถึง 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::lol:
อ้างถึง 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
:lol:
ได้แล้วครับ
ข้าน้อยขอคาราวะ ด้วยใจจริง
ขอบคุณครับ

Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ

Posted: Wed May 22, 2013 5:38 pm
by jakraphong
snasui wrote::lol:
อ้างถึง 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
:lol: ตอบไปแต่ครั้งนั้นแล้วเช่นกันครับ
snasui wrote:สำหรับที่ต้องการนั้น ไม่สามารถทำด้วย Function ที่มากับ Excel ได้ครับ สามารถทำได้ด้วย VBA
กรณีใช้ VBA ให้เขียนมาก่อนตามกฎข้อ 5 ด้านบนครับ

Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ

Posted: Wed May 22, 2013 6:00 pm
by jakraphong
snasui wrote::lol: ตอบไปแต่ครั้งนั้นแล้วเช่นกันครับ
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
:D ผมนำโพสต์นี้กลับมารวมไว้ในกระทู้นี้ เนื่องจากว่าเรื่องเดียวควรโพสต์ต่อจากกระทู้เดิม ไม่ควรตั้งกระทู้ใหม่ครับ

กรณีนี้ผมแจ้งแล้วว่าต้องใช้ VBA และต้องเขียนมาก่อน ติดตรงไหนค่อยถามกัน ไม่ได้หมายความว่ากระทู้ใดที่ตอบด้วยสูตรแล้วจะไม่ตอบเป็นอย่างอื่นอีก และไม่ได้หมายความว่าใช้วิธีการแก้ไขเป็นอย่างอื่นแล้วต้องไปตั้งกระทู้ใหม่

Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ

Posted: Wed May 22, 2013 7:19 pm
by jakraphong
snasui wrote::D ผมนำโพสต์นี้กลับมารวมไว้ในกระทู้นี้ เนื่องจากว่าเรื่องเดียวควรโพสต์ต่อจากกระทู้เดิม ไม่ควรตั้งกระทู้ใหม่ครับ

กรณีนี้ผมแจ้งแล้วว่าต้องใช้ VBA และต้องเขียนมาก่อน ติดตรงไหนค่อยถามกัน ไม่ได้หมายความว่ากระทู้ใดที่ตอบด้วยสูตรแล้วจะไม่ตอบเป็นอย่างอื่นอีก และไม่ได้หมายความว่าใช้วิธีการแก้ไขเป็นอย่างอื่นแล้วต้องไปตั้งกระทู้ใหม่

อาจารย์ครับ ผมต้องขออภัยครับ
ผมไม่มีความรุ็ด้านการเขียน VBA เลยครับ
ได้โปรดช่วยแนะนำด้วยครับ

แบบว่าผมเรียนรู้ด้วยตัวเองแบบครูพักลักจำครับ

ขอขอบคุณอาจารย์ด้วยครับที่ช่วยแนะนำครับ

Re: ต้องการให้vlookupแสดงทุกค่าที่พบครับ

Posted: Wed May 22, 2013 9:08 pm
by snasui
:D หากเป็น VBA จำเป็นต้องเขียนมาก่อนทุกกรณี ไม่มียกเว้นครับ

สำหรับการทำเช่นที่ต้องการนี้สามารถใช้สูตรทำได้เช่นกันแต่จะต้องใช้คอลัมน์ช่วยและหากว่าข้อมูลจำนวนมากจะทำให้เกิดการคำนวณนาน ไฟล์จะทำงานช้าเพราะต้องใช้สูตร Array

ลองตามนี้ครับ
  1. ชีท 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 ลงด้านล่าง
  2. ที่เซลล์ 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::D หากเป็น VBA จำเป็นต้องเขียนมาก่อนทุกกรณี ไม่มียกเว้นครับ

สำหรับการทำเช่นที่ต้องการนี้สามารถใช้สูตรทำได้เช่นกันแต่จะต้องใช้คอลัมน์ช่วยและหากว่าข้อมูลจำนวนมากจะทำให้เกิดการคำนวณนาน ไฟล์จะทำงานช้าเพราะต้องใช้สูตร Array

ลองตามนี้ครับ
  1. ชีท 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 ลงด้านล่าง
  2. ที่เซลล์ 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(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
ความรู้ที่ยอดเยี่ยมครับ ขอบคุณมากสำลับเจ้าของกระทู้ และท่านอาจารย์ที่แนะนำสูตรแบบนี้ ผมชอบมากครับ