Page 1 of 1

ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Fri May 24, 2019 9:31 pm
by March201711
เช่น ดึง cell b6 ชื่อ true โดยหาว่าชื่อนี้อยู่ชีทไหน มาแสดงที่ cell e6 คือ 4.86 ค่ะ ตามที่ high light สีเขียว

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Fri May 24, 2019 11:18 pm
by puriwutpokin
ที่ E6=VLOOKUP("*"&B6,INDIRECT(INDEX("'"&{"INDUS","TECH"}&"'!B2:G200",MATCH(TRUE,COUNTIF(INDIRECT("'"&{"INDUS","TECH"}&"'!B2:B200"),"*"&B6)>0,0))),6,0) คัดลอกลงครับ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 8:58 am
by March201711
ถ้ามีการเพิ่มชีทเข้ามาเรื่อยๆ เช่น consump และ propcon หรือ ชีทอื่นๆ จะปรับสูตรอย่างไรคะ เพราะมี sheet ขึ้นมาเรื่อยๆน่ะค่ะ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 10:06 am
by puriwutpokin
ปรับเป็นที่ F2:F9 คีย์ชื่อชีทที่มี
ที่ E6=VLOOKUP("*"&B6,INDIRECT(INDEX($F$2:$F$9&"!B2:G200",MATCH(TRUE,COUNTIF(INDIRECT($F$2:$F$9&"!B2:B200"),"*"&B6)>0,0))),6,0) กด Ctrl+Shift+Enter คัดลอกลงครับ
หรือไม่ชอบ Array
ก็ปรับเป็น E6=VLOOKUP("*"&B6,INDIRECT(INDEX($F$2:$F$9&"!B2:G200",MATCH(TRUE,INDEX(COUNTIF(INDIRECT($F$2:$F$9&"!B2:B200"),"*"&B6)>0,0),0))),6,0) คัดลอกลงครับ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 11:46 am
by March201711
มาปรับใช้กับงานแล้ว ทำไมข้อมูลขึ้น #ref ทั้งหมดคะ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 12:32 pm
by snasui
:D เนื่องจากมีการตั้งชื่อ Range Name ให้ชื่อ index ซึ่งไปซ้ำกับชื่อฟังก์ชั่น Index ทำให้ฟังก์ชั่น Index ไม่สามารถทำงานได้ครับ

วิธีการแก้ไข
  1. คลิกขวาที่แถบชีตใด ๆ > Unhide
  2. เลือกชีต Set_Index > OK
  3. เข้าเมนู Formulas > Name Manager > เลือก Range Name ที่ชื่อ Index > คลิกปุ่ม Edit
  4. ตรง Name เปลี่ยนคำว่า Index เป็นข้อความอื่น > OK
  5. แก้ไขสูตรโดยเปลี่ยนข้อความตามข้อ 4 ให้กลับมาเป็น Index

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 2:20 pm
by March201711
ค่ะ อีกนิดนึงค่ะ ทำไมใน Name manager ในแต่ละบรรทัด ไม่สามารถ delete แต่ละรายการได้คะ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 2:34 pm
by puriwutpokin
มันเป็นค่าจากตาราง Table ครับ ต้องไปลบตารางออกเท่านั้นครับ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 3:15 pm
by March201711
ลบตารางยังไงคะ พยายามแปลงตารางเป็นปกติแล้วก็ลบไม่ได้ค่ะ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 3:22 pm
by puriwutpokin
ที่ไฟล์เดิม กด F5 จะมีคำว่า Table เลือกแล้ว กด Ok มันจะไปที่ตารางนั้น แล้ว Convert เป็นช่วงปกติ
ไฟล์ที่แนบมานี้เอาออกให้แล้วครับ :D

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 3:25 pm
by snasui
March201711 wrote: Sat May 25, 2019 3:15 pm ลบตารางยังไงคะ พยายามแปลงตารางเป็นปกติแล้วก็ลบไม่ได้ค่ะ
:D กรุณาเล่าขั้นตอนมาอย่างละเอียดจะได้ช่วยวินิจฉัยให้ได้ครับ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 8:46 pm
by March201711
ได้แล้วค่ะ
สงสัยนิดนึงค่ะ
E6=VLOOKUP("*"&B6,INDIRECT(INDEX($F$2:$F$9&"!B2:G200",MATCH(TRUE,INDEX(COUNTIF(INDIRECT($F$2:$F$9&"!B2:B200"),"*"&B6)>0,0),0))),6,0) คัดลอกลงครับ
ทำไมต้อง vlookup ค่า * ก่อนคะ แล้วค่า match ทำไมต้องหาค่า true ด้วยคะ

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 9:05 pm
by puriwutpokin
March201711 wrote: Sat May 25, 2019 8:46 pm ได้แล้วค่ะ
สงสัยนิดนึงค่ะ
E6=VLOOKUP("*"&B6,INDIRECT(INDEX($F$2:$F$9&"!B2:G200",MATCH(TRUE,INDEX(COUNTIF(INDIRECT($F$2:$F$9&"!B2:B200"),"*"&B6)>0,0),0))),6,0) คัดลอกลงครับ
ทำไมต้อง vlookup ค่า * ก่อนคะ แล้วค่า match ทำไมต้องหาค่า true ด้วยคะ
ลองเอาค่า "*"& ออกทั้งหมดดูครับว่า จะจับคำว่า TRUE จากเงื่อนไขไม่ได้เพราะ TRUE ไม่ซ้ำกับฟังก์ชั่น TRUE ครับ ต้องทำ
ให้เกิดความแต่ต่างครับ ส่วน TRUE ตรง MATCH(TRUE,INDEX(COUNTIF.....
สีแดงนั้นเป็นคนละความหมายกับ TRUE จากเงื่อนไขการหาของข้อมูลครับ คนละตัวกันครับ แค่มันไปตรงกัน สีแดง
เป็นเงื่อนไขของสูตรนี้เท่านั้นเองครับไม่เกี่ยวข้องกันครับ :D

Re: ดีงข้อมูลในชื่อที่มีอยู่แต่ละ ชีทมาแสดง

Posted: Sat May 25, 2019 9:48 pm
by March201711
เข้าใจแล้วค่ะ ขอบคุณ คุณ puriwutpokin และ อาจารย์ มากค่ะ :D