PDA

View Full Version : ใช้ Validation แล้วสามารถดึงข้อมูลได้ทั้งหมด



nutty
10 Jul 2007, 15:38
ผมกำลังพยายามใช้ Excel ในการสร้างระบบฐานข้อมูลอยู่นะครับ แต่มาติดปัญหา 2 ข้อ ดังนี้ครับ
1. เลือกค่าจาก Validation แล้วให้แสดงข้อมูลทั้งหมดที่เกี่ยวข้องในพื้นที่ที่กำหนดไว้นะครับ
สำหรับปัญหาข้อนี้ คือ ผมต้องการให้เลือกค่าจาก ฟิลด์ชื่อ "แผนก" (Column G) แล้วให้ค่าในฟิลด์ชื่อ "ประเภทการใช้งาน" ที่ตรงกับฟิลด์ชื่อ "แผนก" ทั้งหมดแสดงค่าในพื้นที่ที่กำหดนไว้นะครับ (Column K) ไม่ทราบว่าจะต้องทำอย่างไรครับ
2. ทำการ Lookup ซ้อนกัน ต้องทำอย่างไรครับ
สำหรับปัญหาข้อนี้ คือ หลังจากได้ข้อมูลจากข้อที่ 1 มาแล้ว ผมได้กำหนด Validation (Column H) ให้รับข้อมูลจากพื้นที่ที่กำหนดไว้ (Column K) เพื่อนำค่าที่ได้จากการเลือกของทั้ง 2 ฟิลด์ คือ ฟิลด์ "แผนก" และ ฟิลด์ "ประเภทการใช้งาน" ไปทำการ Lookup ในตารางข้อมูลเพื่อค้นหาค่าในฟิลด์ชื่อ "หมวดค่าใช้จ่าย" นะครับ ไม่ทราบว่าจะต้องใช้ Vlookup โดยให้พิจารณา 2 ข้อมูลนี้ อย่างไรบ้างครับ

ผมได้แนบไฟล์ตัวอย่างมาให้ดูด้วยนะครับ

ขอบคุณทุกท่านครับ

nutty
10 Jul 2007, 17:06
หลังจากที่โพสถามไปแล้ว ผมก็ได้พยายามค้นหาวิธีทำจากในเวบนะครับ และได้พบวิธีการใช้ Array และ Range Name เพื่อตรวจสอบตรรกะ ตามลิงค์ข้างล่างนี้นะครับ

http://www.excelexperttraining.com/blog/archives/000263p.php

ซึ่งจากการได้ลองทำดู ถือว่าใช้งานได้ดีเลยทีเดียวนะครับ แต่จะติดปัญหาเพิ่มเติม ดังนี้
1. ต้องมีการใช้ Column ในการเก็บค่าเพิ่มขึ้น
2.ต้องมีการใส่สูตรในทุกบรรทัดเท่ากับจำนวนข้อมูลที่มีข้อมูล ซึ่งหากจำนวนข้อมูลไม่แน่นอน ทำให้ต้องกลับมาเพิ่มสูตรทุกครั้ง ส่งผลให้การทำงานลำบากและไม่อัตโนมัติ
3. หากข้อมูลไม่ได้ทำการ Sort แล้ว จะทำให้ค่าที่ได้ใน พื้นที่ที่กำหนดไว้ มีช่องว่างนะครับ ส่งผลให้เกิดความไม่แน่ใจเวลาเลือกข้อมูลใน Validation ว่ามีข้อมูลครบหรือไม่นะครับ

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

ขอบคุณมากครับ

hs1
10 Jul 2007, 20:17
ลองดูอีกวิธีครับ

nutty
11 Jul 2007, 09:49
ขอบคุณ คุณ hs1 มากเลยครับ ช่วยได้เยอะเลยครับ :)

ผมมีเรื่องอยากขอคำแนะนำเพิ่มเติมด้วยนะครับ เกี่ยวกับ การเรียกค่าที่แสดงใน Range Name นะครับ

จากที่ไฟล์แนบที่ 2 ในคอลัมน์ C หากผมต้องการเขียนสูตรเพื่อให้ เซลล์ J4 สามารถอ่านค่าที่แสดงในคอลัมน์ C ซึ่งจะมีค่าเพียงค่าเดียว โดยไม่ว่าจะอยู่บรรทัดใดก็ตาม จะต้องทำอย่างไรครับ เพราะผมลองใช้งานดูแล้ว พอข้อมูลถูกเลื่อนไปในบรรทัด ค่าในเซลล์ J4 ก็ไม่สามารถแสดงค่าได้นะครับ

ขอบคุณครับ

อรวีร์
11 Jul 2007, 15:40
ลองดูสูตรใน J4 ค่ะ
น่าจะมีสูตรที่สั้นกว่านี้ เดี๋ยวรอท่านอื่นเข้ามาช่วยตอบอีกค่ะ

nutty
11 Jul 2007, 16:20
ขอบคุณ คุณอรวีร์ มากครับ :)
หลังจากได้เห็นวิธีของคุณอรวีร์ ผมเลยได้ไอเดียใหม่ แต่ยังไม่ดีเท่าของคุณอรวีร์ นะครับ เนื่องจาก ต้องมีการเพิ่มคอลัมน์ (คอลัมน์ C) เพื่อรับค่าผลลัพธ์จากตรรกะ ในคอลัมน์ A และ B โดยใช้ฟังก์ชัน And() นะครับ ซึ่งสูตรที่ได้ คือ

= INDEX(G4:G23,MATCH(TRUE,C4:C23,0),0)

อย่างไร รบกวนท่านผู้รู้ช่วยแนะนำเพิ่มเติมด้วยนะครับ

วานิชย์
11 Jul 2007, 16:22
ดูเฉพาะ J4 อาจจะใช้ Match / Index ได้ครับ
=INDEX($F$4:$F$23,MATCH(H4&I4,section&Application,0))
:)

nutty
11 Jul 2007, 16:32
ขอบคุณ คุณวานิชย์ มากครับ (มาโพสไล่เลี่ยกับผมนิดเดียวเองครับ :p)

แต่ผมลองใส่สูตรดูแล้วนะครับ มันขึ้น #VALUE! นะครับ

เหมือนตอนที่ผมทดลองก่อนที่จะต้องเพิ่มคอลัมน์ รับค่าผลลัพธ์ตรรกะ นะครับ ผมทดลองเขียนเป็น

=INDEX(G4:G23,MATCH(TRUE,AND(A4:A23,B4:B23),0),0)

ก็ขึ้น #N/A นะครับ ผมเลยต้องสร้างคอลัมน์ขึ้นมา ในคอลัมน์ C นะครับ

อย่างไรขอขอบคุณทุกท่านนะครับ และรบกวนผู้รู้ท่านอื่นแนะนำเพิ่มเติมด้วยนะครับ

hs1
11 Jul 2007, 16:34
J4=VLOOKUP(I4 & "",$E$2:$F$21,2,FALSE)
J4=VLOOKUP(TEXT(I4,"00000"),$E$2:$F$21,2,FALSE)

nutty
11 Jul 2007, 16:47
ขอบคุณ คุณ hs1 มากครับ (มาโพสไล่เลี่ยกับผมอีกคนหนึ่งแล้วครับ :p)

ผมได้ลองใช้สูตรที่คุณ hs1 แนะนำไปใช้แล้วนะครับ พบว่า มันจะติดปัญหาตรงที่ หาก "ประเภทค่าใช้จ่าย" ที่ชื่อเหมือนกัน แต่ขึ้นกับแผนกที่ต่างกัน อาจจะถูกระบุให้อยู่ใน "หมวดค่าใช้จ่าย" ที่ต่างกันได้นะครับ ยกตัวอย่างนะครับ

แผนก "A1" ประเภทค่าใช้จ่าย "กิจกรรม 5ส. - อื่นๆ" ถูกจัดอยู่ในหมวด "Factory Supply" แต่
แผนก "A2" ประเภทค่าใช้จ่าย "กิจกรรม 5ส. - อื่นๆ" ถูกจัดอยู่ในหมวด "Other Expense"

ซึ่งพอใช้สูตรของ คุณ hs1 แล้ว จะพบว่า VLOOKUP จะอ่านค่าแรกที่มันพบนะครับ คือ Factory Supply นะครับ

สุดท้ายนี้ ขอขอบคุณ คุณ hs1 อีกครั้งนะครับ :)

วานิชย์
11 Jul 2007, 16:57
อีกแบบครับ
นำของคุณอรวีร์มาปรับนิดหน่อย
ลองดูตามไฟล์แนบครับ
:)

nutty
11 Jul 2007, 16:59
ไฟล์แนบ หาย ไปครับ คุณวานิชย์ :(

วานิชย์
11 Jul 2007, 17:05
ขอบคุณ คุณวานิชย์ มากครับ (มาโพสไล่เลี่ยกับผมนิดเดียวเองครับ :p)

แต่ผมลองใส่สูตรดูแล้วนะครับ มันขึ้น #VALUE! นะครับ

เหมือนตอนที่ผมทดลองก่อนที่จะต้องเพิ่มคอลัมน์ รับค่าผลลัพธ์ตรรกะ นะครับ ผมทดลองเขียนเป็น

=INDEX(G4:G23,MATCH(TRUE,AND(A4:A23,B4:B23),0),0)

ก็ขึ้น #N/A นะครับ ผมเลยต้องสร้างคอลัมน์ขึ้นมา ในคอลัมน์ C นะครับ

อย่างไรขอขอบคุณทุกท่านนะครับ และรบกวนผู้รู้ท่านอื่นแนะนำเพิ่มเติมด้วยนะครับ

Array Formula ครับ :)

อรวีร์
11 Jul 2007, 17:31
สูตรแบบที่ไม่ใช้ Array ก็เช่น
=INDIRECT("F" & SUMPRODUCT(ROW(A4:A23),A4:A23*B4:B23))

ช่วยกันหลายๆแบบ เพื่อเสริมไอเดีย :p

hs1
11 Jul 2007, 22:23
ผมขอใช้ตารางที่ผมนะครับ
=INDEX($D$2:$D$21,MATCH(MATCH($F$7,$I$2:$I$21,0),$E$2:$E$21,0))

nutty
16 Aug 2007, 12:36
ขอบคุณ คุณ hs1 , คุณวินิชย์ , คุณอรวีร์ มากครับ อาจจะมาขอบคุณช้าไปสักนิด คงไม่ว่ากันนะครับ :p

วานิชย์
16 Aug 2007, 13:44
ขอบคุณ คุณ hs1 , คุณวินิชย์ , คุณอรวีร์ มากครับ อาจจะมาขอบคุณช้าไปสักนิด คงไม่ว่ากันนะครับ :p

ขอบคุณช้าไป ไม่เป็นไรครับ แต่เขียนชื่อผมผิดนี่ เคืองนิด ๆ ครับ .... :(

nutty
16 Aug 2007, 19:53
ต้องขออภัยอย่างมากครับ :( ที่เขียนชื่อ คุณ วานิชย์ ผิดไป :eek: อย่าเคืองผมเลยนะครับ :p

คราวหน้าจะไม่ให้พลาดอีกแล้วกันนะครับ :rolleyes:

อย่างไร ก็ต้องขอบคุณอีกครั้งนะครับ :)

MBIG
8 Mar 2009, 13:37
ผมสนใจวิธีที่กล่าวถึงในกระทุ้นี้นะครับ

แต่ว่าตอนนี้ไฟล์แนบหายไปแล้วครับ ไม่ทราบว่ามีเก็บไว้ในฐานข้อมูลหรือเปล่าครับ

ขอบคุณครับผม

:hand::hand::hand::hand::hand::hand::hand:

สมเกียรติ
9 Mar 2009, 10:05
ประมาณทุก 2-3 เดือน แฟ้มแนบในฟอรัมจะถูกลบทิ้งเพื่อทำให้มีเนื้อที่บนระบบ server ดังนั้นต้องหมั่นเข้ามา download แฟ้มเก็บไว้เองทุกคน

ถ้าจำชื่อแฟ้มและวันที่ได้ ผมอาจจะหาแฟ้มนั้นมาให้ได้ครับ