Page 1 of 1

เปลี่ยนค่าอ้างอิง cell ในสูตร ให้เป็นไปตามเงื่อนไขกำหนด cell อ้างอิง

Posted: Sat Feb 27, 2021 2:29 pm
by Supachok
เรียน ท่านอาจารย์และท่านผู้รู้

รบกวนสอบถามข้อคำแนะนำ
ผมแนบ 2 ไฟล์

1. Example formula : เป็นตัวอย่างเป็นแบบ
2. Ask for formula : เป็นสิ่งที่ลองทำดู

คำถามโจทย์ หาค่าเริ่มที่ C18
1 . matchหา SCCTG ที่ถูกต้อง
2 . match zone ตาม SCC ได้ถูกต้อง
----------------------------------------------------
หรือต้อง filter manual เองแล้ว สร้างสูตร copy ที่ละส่วนเอง
แล้ว ปลดกรองเริ่มเงื่อนไขใหม่


ทั้ง 2 ไฟล์ต้องฝากอาจารย์เพราะ ขึ้น HTTP อีกแล้ว

Re: เปลี่ยนค่าอ้างอิง cell ในสูตร ให้เป็นไปตามเงื่อนไขกำหนด cell อ้างอิง

Posted: Sat Feb 27, 2021 5:00 pm
by snasui
:D ผมแนบไฟล์ให้แล้วในโพสต์คำถามครับ

ในโอกาสถัดไป กรุณาตัดไฟล์มาเฉพาะที่เป็นตัวอย่างซึ่งไม่น่าจะเป็นพันบรรทัด

ตัวอย่างสูตรในไฟล์ Exampleformula เซลล์ I17 ตามด้านล่างครับ

=IF(F17<=OFFSET($A$3,MATCH("*"&A17,$A$3:$A$13,0),MATCH("*= "&K17,INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,0),0),0)),"Q1",IF(F17>OFFSET($A$3,MATCH("*"&A17,$A$3:$A$13,0)+1,MATCH("*= "&K17,INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,0),0),0)),"Q4","Q2 to Q3"))

Enter > Copy ลงด้านล่าง

หากใช้ Column N มาช่วยเพื่อจะได้ไม่ต้องเขียนสูตรซ้ำ ๆ ก็จะได้เป็น
  1. ที่ N17 คีย์
    =MATCH("*"&A17,$A$3:$A$13,0)
    Enter > Copy ลงด้านล่าง
  2. ที่ I17 คีย์
    =IF(F17<=OFFSET($A$3,N17,MATCH("*= "&K17,INDEX($B$3:$K$13,N17,0),0)),"Q1",IF(F17>OFFSET($A$3,N17+1,MATCH("*= "&K17,INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,0),0),0)),"Q4","Q2 to Q3"))
    Enter > Copy ลงด้านล่าง

Re: เปลี่ยนค่าอ้างอิง cell ในสูตร ให้เป็นไปตามเงื่อนไขกำหนด cell อ้างอิง

Posted: Sat Feb 27, 2021 10:26 pm
by Supachok
เรียน ท่านอาจารย์
ขอขอบคุณในการชี้แนะ
ผมพยายามศึกษาสูตรที่ได้ใช้ในการหาผลลัพธ์ในการแก้โจทย์
ไม่มีการใช้ function อะไรใหม่ๆ แต่ยังติดเรื่อง index ที่ยังไม่เข้าใจสักเท่าไร
จึงขออธิบายสูตรในแบบที่ผมเข้าใจดังนี้

=IF(F17<=OFFSET($A$3,MATCH("*"&A17,$A$3:$A$13,0),MATCH("*= "&K17,INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,0),0),0)),"Q1"
- match ให้หาค่า cell A17 ใด ๆ ที่มีอยู่ใน range A3:A13
- index พอแทนค่าแล้วจาก match = index($B$3:$K$13,1,0)
ผลลัพธ์ของ index ที่เกิดเป็น range ของ match ที่ครอบอยู่
จะได้ - $B$3:$K$3
- =INDEX(B3:K13,1,0) จากเดิม

ผมเพียงเดาว่า
- 1 คือค่า Row
- 0 คือค่า column
หากที่ผมอธิบายถูกแล้วเมื่อเปลี่ยนค่าตัวแปรเป็น
- =INDEX(B3:K13,13,0) จะได้ range
- $B$13:$K$13

ใช่ไหมครับ ผมไม่เคยใช้ index ในกรณีแบบนี้เลยแต่ดูแล้วไม่ใช้เรื่องสับสนมาก
เรื่องไฟล์ต้องขออภัยครับ ผมกลัวตัวอย่างเงื่อนไขไม่ครบจะพยายามให้มากกว่านี้ครับ

Re: เปลี่ยนค่าอ้างอิง cell ในสูตร ให้เป็นไปตามเงื่อนไขกำหนด cell อ้างอิง

Posted: Sun Feb 28, 2021 12:08 am
by Bo_ry
อีกแบบ I17
=LOOKUP(F17,N(INDEX(INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,),MATCH("* "&K17,INDEX($B$3:$K$13,MATCH("*"&A17,$A$3:$A$13,),),)):$K$13,N(IF(1,{1;2;3})),1))+9^-9,{"Q1";"Q2 to Q3";"Q4"})

กด Ctrl+Shift+Enter

Re: เปลี่ยนค่าอ้างอิง cell ในสูตร ให้เป็นไปตามเงื่อนไขกำหนด cell อ้างอิง

Posted: Sun Feb 28, 2021 6:53 am
by snasui
Supachok wrote: Sat Feb 27, 2021 10:26 pm ผมเพียงเดาว่า
- 1 คือค่า Row
- 0 คือค่า column
:D เข้าใจถูกต้องแล้วครับ
Supachok wrote: Sat Feb 27, 2021 10:26 pm หากที่ผมอธิบายถูกแล้วเมื่อเปลี่ยนค่าตัวแปรเป็น
- =INDEX(B3:K13,13,0) จะได้ range
- $B$13:$K$13

ใช่ไหมครับ
กรณีนี้หมายถึงบรรทัดที่ 13 ของช่วง $B$13:$K$13 เข้าใจถูกต้องแล้ว แต่ในความเป็นจริงมันจะหลุดขอบเขตเพราะช่วงข้อมูลดังล่าวมีแค่ 11 บรรทัดครับ