ความคิดเห็นจาก Expert Account
ความคิดเห็นที่ 1
ภาพตัวอย่างข้อมูลดิบแต่ละเดือนครับ
เลียนแบบของคุณมาเลยละกัน จะได้เข้าใจต่อเนื่องได้ง่าย
ทั้งนี้ ผมต้องขอเปลี่ยนชื่อ Sheet เป็นชื่อเดือน นะครับ เพราะต้องเอามาใช้ในการอ้างอิง

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

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

หลักการคิด คือ
ผมใช้ VLookup
ซึ่งรูปแบบคือ VLookup( หาอะไร , จากที่ไหน , ดึงเอาคอลัมน์ที่เท่าไรมาแสดง)
1. หาอะไร ตรงนี้ ผมให้หา เบอร์ห้อง
ถ้าแบบตรง ๆ ก็คือ ช่องที่เป็นเบอร์ห้อง คือ B2
2. จากที่ไหน ซึ่งถ้าตรง ๆ ก็คือ เราก็ระบุชื่อ Sheet ตามด้วยพื้นที่ตาราง
ตัวอย่างเช่น จาก Sheet ชื่อ "มกราคม" ในคอลัมน์ A ถึง i (ไอ)
ก็เป็น
B1&"!$A:$I" หมายถึง เอา B1 ต่อท้ายด้วยข้อความว่า "!$A:$I"
ผลก็คือ กลายเป็นคำว่า มกราคม!$A:$I
แล้วทีนี้ คำนี้เอาไปใช้ตรง ๆ ในสูตรไม่ได้ครับ ต้องใช้ indirect ช่วยเพื่อเปลี่ยนข้อความ เป็นการอ้างอิง
ก็กลายเป็น
INDIRECT(B2&"!$A:$I")
เติมตัว Lock อีกหน่อย เป็น
INDIRECT($B$2&"!$A:$I")
ดังนั้นตอนนี้สูตร ก็จะหา จาก (สูตรยังไม่จบ นะครับ อย่าเพิ่งลุกจากเก้าอี้)
ซึ่งคุณจะสังเกตได้ว่า ทุกสูตรเหมือนกันหมด
คือ ค้นเลขห้อง จากตารางชื่อเดือนจากคอลัมน์ เอ ถึง ไอ
เหลือแค่เลขตัวสุดท้ายที่ต่างกัน
แก้ไขเพิ่มเติมครับ เกือบลืม
ตารางพื้นที่ ที่จะถูกค้นหานี้ (คอลัมน์ เอ ถึง ไอ)
ตรงคอลัมน์ A ที่จะถูกค้นหา ซึ่งก็คือ เบอร์ห้อง
ต้อง "เรียงจากน้อยไปมาก" นะครับ
ไม่งั้น เครื่องจะหาให้ผิด

3. ดึงเอาคอลัมน์ที่เท่าไรมาแสดง
ตรงนี้ครับ ที่ผมบอกว่า ทุกสูตรเหมือนกันหมด ต่างกันแค่เลขสุดท้าย
ถ้าคุณดูรูปข้อมูลดิบ จะเห็นว่า จาก เอ ถึง ไอ นั้น
คอลัมน์ที่ 6 คือ เลขมิเตอร์ไฟเก่า
ดังนั้น ถ้าอยากได้เลขมิเตอร์ไฟเก่า ก็ใช้เลข 6 เป็นตัวระบุ
เรียบร้อยครับ
หวังว่า คงนำไป ปรับแต่งต่อได้ไม่ยาก นะครับ
เลียนแบบของคุณมาเลยละกัน จะได้เข้าใจต่อเนื่องได้ง่าย
ทั้งนี้ ผมต้องขอเปลี่ยนชื่อ Sheet เป็นชื่อเดือน นะครับ เพราะต้องเอามาใช้ในการอ้างอิง

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

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

หลักการคิด คือ
ผมใช้ VLookup
ซึ่งรูปแบบคือ VLookup( หาอะไร , จากที่ไหน , ดึงเอาคอลัมน์ที่เท่าไรมาแสดง)
1. หาอะไร ตรงนี้ ผมให้หา เบอร์ห้อง
ถ้าแบบตรง ๆ ก็คือ ช่องที่เป็นเบอร์ห้อง คือ B2
VLookup( B2 , ......
แต่เพื่อ Lock ไว้ไม่ให้เผลอ Copy สูตรแล้ว ค่าเซลล์เคลื่อน ก็ใส่ $B$2 คาไว้เลย ก็จะเป็น Vlookup( $B$2 ,
2. จากที่ไหน ซึ่งถ้าตรง ๆ ก็คือ เราก็ระบุชื่อ Sheet ตามด้วยพื้นที่ตาราง
ตัวอย่างเช่น จาก Sheet ชื่อ "มกราคม" ในคอลัมน์ A ถึง i (ไอ)
=VLOOKUP( B2, มกราคม!A:I
แต่เราไม่อยากให้ ชื่อคอลัมน์เคลื่อน ก็จะใช้เป็น =VLOOKUP( B2, มกราคม!$A:$I
แล้ว ไม่อยากต้องมานั่งแก้ ชื่อ Sheet กันทุกช่องสูตร เราก็เอาชื่อ sheet ที่อยู่ใน A1 มาใช้ซะ ก็เป็น
B1&"!$A:$I" หมายถึง เอา B1 ต่อท้ายด้วยข้อความว่า "!$A:$I"
ผลก็คือ กลายเป็นคำว่า มกราคม!$A:$I
แล้วทีนี้ คำนี้เอาไปใช้ตรง ๆ ในสูตรไม่ได้ครับ ต้องใช้ indirect ช่วยเพื่อเปลี่ยนข้อความ เป็นการอ้างอิง
ก็กลายเป็น
INDIRECT(B2&"!$A:$I")
เติมตัว Lock อีกหน่อย เป็น
INDIRECT($B$2&"!$A:$I")
ดังนั้นตอนนี้สูตร ก็จะหา จาก (สูตรยังไม่จบ นะครับ อย่าเพิ่งลุกจากเก้าอี้)
=VLOOKUP( $B$2 , INDIRECT( $B$1&"!$A:$I" )
ซึ่งคุณจะสังเกตได้ว่า ทุกสูตรเหมือนกันหมด
คือ ค้นเลขห้อง จากตารางชื่อเดือนจากคอลัมน์ เอ ถึง ไอ
เหลือแค่เลขตัวสุดท้ายที่ต่างกัน
แก้ไขเพิ่มเติมครับ เกือบลืม
ตารางพื้นที่ ที่จะถูกค้นหานี้ (คอลัมน์ เอ ถึง ไอ)
ตรงคอลัมน์ A ที่จะถูกค้นหา ซึ่งก็คือ เบอร์ห้อง
ต้อง "เรียงจากน้อยไปมาก" นะครับ
ไม่งั้น เครื่องจะหาให้ผิด

3. ดึงเอาคอลัมน์ที่เท่าไรมาแสดง
ตรงนี้ครับ ที่ผมบอกว่า ทุกสูตรเหมือนกันหมด ต่างกันแค่เลขสุดท้าย
ถ้าคุณดูรูปข้อมูลดิบ จะเห็นว่า จาก เอ ถึง ไอ นั้น
คอลัมน์ที่ 6 คือ เลขมิเตอร์ไฟเก่า
ดังนั้น ถ้าอยากได้เลขมิเตอร์ไฟเก่า ก็ใช้เลข 6 เป็นตัวระบุ
=VLOOKUP( $B$2 , INDIRECT( $B$1&"!$A:$I" ) , 6 )
หรือถ้าอยากได้ "ค่าเช่า" ก็อยู่คอลัมน์ที่ 2 ก็ใช้เลข 2=VLOOKUP( $B$2 , INDIRECT( $B$1&"!$A:$I" ) , 2 )
เรียบร้อยครับ
หวังว่า คงนำไป ปรับแต่งต่อได้ไม่ยาก นะครับ

แสดงความคิดเห็น
อยากทำใบแจ้งหนี้ห้องเช่า
มีเรื่องรบกวนผู้รู้ค่ะ อยากทำใบแจ้งหนี้ ที่ดึงข้อมูลจาก Excel ที่คีย์ไว้ค่ะ ยังไม่อยากซื้อโปรแกรม
ไฟล์ excel ก็ผูกสูตรเองค่ะ แบบมั่วๆง่ายๆ แหะๆ คือไม่เก่งเท่าไหร่ค่ะ แต่อยากให้ร่นเวลาในการทำงานมากขึ้น ไม่ต้องเขียนใบแจ้งหนี้ด้วยมือ
หน้าตาใบแจ้งหนี้ ที่อยากได้เป็นแบบนี้ค่ะ (รูปเอามาจากใน google นะคะ)
สามารถทำได้มั้ยคะ ยังเป็นธุรกิจขนาดเล็ก และรับช่วงต่อมาค่ะ เป็นธุรกิจของครอบครัว เลยยังไม่อยากซื้อโปรแกรมการจัดการห้องพักค่ะ
ขอบคุณมากๆเลยนะคะ
ปกติเขียนเป็นบิลด้วยระบบคนนี่แหละค่าา 555