Page 1 of 1
เขียนสูตรในเร้งเนม
Posted: Sat Sep 21, 2013 11:17 pm
by pongpang
ขอทราบว่าการเขียนสูตรในเร้งเนม ครับ โดยให้เลือกแถว(ROW)ที่ว่างครับ ซึ่งไม่จำกัดจำนวนแถว เพราะเแถวที่ว่างอาจจะไม่เท่ากัน ครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sat Sep 21, 2013 11:44 pm
by bank9597
pongpang wrote:ขอทราบว่าการเขียนสูตรในเร้งเนม ครับ โดยให้เลือกแถว(ROW)ที่ว่างครับ ซึ่งไม่จำกัดจำนวนแถว เพราะเแถวที่ว่างอาจจะไม่เท่ากัน ครับ

ผมคิดว่าไม่สามารถทำได้ครับ เขียนให้หาค่าว่างนั้นสามารถทำได้ แต่จะให้เจาะจงว่าว่างตรงเซลล์ไหนบ้างนั้น ไม่สามารถทำได้ครับ
สูตรที่ใช้ใน RangName เช่น =OFFSET('Sheet1 (1)'!B4,0,0,COUNTA('Sheet1 (1)'!$B:$B)-2) ใช้สำหรับข้อมูลที่เป็น Database ซึ่งจะไม่มีช่องว่างในตารางครับ
ถ้าให้ดี ลองแนบไฟล์ และอธิบายโจทย์มาอีกครั้งครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sat Sep 21, 2013 11:55 pm
by pongpang
ขอเรียนดังนี้ครับ
เมื่อเขียนสูตรในเร้งเนมแล้ว เมื่อคลิกที่สูตรของเร้งเนม จะมีเส้นประเลือกเฉพาะแถวที่ว่างครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 12:13 am
by bank9597

กรณีที่เซลล์ว่างอยู่ติดกันดังรูปที่แนบมานั้น สามารถเขียนสูตรได้ครับ แต่ในกรณีที่เซลล์ว่างสลับกับเซลล์ที่มีข้อมูลปะปนกันไป ไม่คิดว่าไม่สามารถทำได้ครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 12:32 am
by pongpang
เรียน เพิ่มเติม ครับ
เซลอยู่ติดกันและเป็นด้านล่างครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 12:54 am
by bank9597
pongpang wrote:เรียน เพิ่มเติม ครับ
เซลอยู่ติดกันและเป็นด้านล่างครับ

รบกวนส่งไฟล์ตัวอย่างมาดูหน่อยครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 1:46 am
by pongpang
เรียน คุณ bank9597 ขอบคุณมากครับ เขียนได้แล้วครับ คือ=OFFSET(Sheet1!$A$2,COUNTA(Sheet1!$A$2:$A$20),0,COUNTBLANK(Sheet1!$A$2:$A$20),3)
แต่ผลที่ติดตามมา คือ ถ้าหากลบแถวหรือเซลที่เลือก จะทำให้สูตรในเร้งเนมเปลี่ยนไป ครับ เช่น =OFFSET(Sheet1!$A$2,COUNTA(Sheet1!$A$2:$A$20),0,COUNTBLANK(Sheet1!$A$2:$A$20),3)
ถ้าหากลบ 10 แถวจะเปลี่ยนเป็น =OFFSET(Sheet1!$A$2,COUNTA(Sheet1!$A$2:$A$10),0,COUNTBLANK(Sheet1!$A$2:$A$10),3) ต้องแก้ปัญหานี้อย่างไรครับ ถ้าต้องการให้สูตรของเร้งเนมคงที่
ทดลองในไฟล์ที่แนบครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 7:25 am
by snasui

เปลี่ยนสูตรเป็นตามด้านล่างครับ
=OFFSET(Sheet1!$A$2,MATCH(9.99999999999999E+307,Sheet1!$A:$A)-1,0,COUNTBLANK(Sheet1!$A$2:$A$16),3) หรือ
=INDEX(Sheet1!$A:$A,MATCH(9.99999999999999E+307,Sheet1!$A:$A)+1):INDEX(Sheet1!$C:$C,MATCH(CHAR(255),Sheet1!$A:$A)-1)
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 10:35 am
by pongpang
ขอบคุณ คุณคนควน ครับ จากสูตรทั้ง 2 สูตร ได้นำไปทดลองแล้ว มีผลดังนี้ครับ
1. =OFFSET(Sheet1!$A$2,MATCH(9.99999999999999E+307,Sheet1!$A:$A)-1,0,COUNTBLANK(Sheet1!$A$2:$A$20),3) เมื่อลบแถวแล้ว ส่วนนี้COUNTBLANK(Sheet1!$A$2:$A$20) ตามข้างล่างครับ
=OFFSET(Sheet1!$A$2,MATCH(9.99999999999999E+307,Sheet1!$A:$A)-1,0,COUNTBLANK(Sheet1!$A$2:$A$10),3)
2. =INDEX(Sheet1!$A:$A,MATCH(9.99999999999999E+307,Sheet1!$A:$A)+1):INDEX(Sheet1!$C:$C,MATCH(CHAR(255),Sheet1!$A:$A)-1) เมื่อสั่งลบด้วย Macro ซึ่งเขียน Code ดังนี้
Code: Select all
Sub delete_1()
Application.Goto Reference:="AA"
Selection.Select
Selection.Delete
Sheets("sheet1").Select
Range("c2").Select
End Sub
เมื่อแถวถูกลบ คอลัมน์ทางขวาจะเลื่อนมาแทนที่ทางซ้ายมือครับ ไม่ทราบว่าจะแก้ไขอย่างไรครับ
ขอความกรุณาด้วยครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 10:46 am
by snasui

ไม่เข้าใจครับ
- AA คืออะไร
- สิ่งที่ต้องการลบคือคอลัมน์ หรือบรรทัด และทำไมต้องลบ
- ใช้การ Clear Content แทนได้หรือไม่ครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 1:33 pm
by pongpang
snasui wrote:
ไม่เข้าใจครับ
- AA คืออะไร
- สิ่งที่ต้องการลบคือคอลัมน์ หรือบรรทัด และทำไมต้องลบ
- ใช้การ Clear Content แทนได้หรือไม่ครับ
เรียน คุณ คนควน
ขอบตอบคำถามเป็นข้อ ๆ ดังนี้ ครับ
ข้อ1 AA คือ เร้งเนมที่เขียนสูตร ครับ
ข้อ 2 สิ่งที่ต้องการลบ คือบรรทัด ครับ เพราะต้องการให้จำนวนแถว(บรรทัด)ที่ต้องการพริ้นท์ลดลงและไม่มีบรรทัดว่าง ครับ
ข้อ 3 ใช้การ Clear Content ไม่ได้ครับ เพราะไม่ทำให้แถว(บรรทัด)ลดลง เมื่อลบแล้วทำให้จำนวน แถว(บรรทัด)ลดลง และจะสั่งพรินท์ ต่อไป ครับ
Code: Select all
Sub delete_1()
Application.Goto Reference:="AA"
'AA เป็นชื่อเร้งเนม ทำให้เร้งเนม สูตรเปลี่ยนแปลง
'Application.Goto Reference:="BB"
'BB เป็นชื่อเร้งเนม ทำให้เซลเลื่อนจากขวาไปทางซ้าย จำนวนแถว(บรรทัด)เท่าเดิม
Selection.Select
Selection.Delete
Sheets("sheet1").Select
Range("c2").Select
End Sub
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 1:41 pm
by snasui

การลบบรรทัดว่างไม่จำเป็นต้องเขียน Range Name เนื่องจาก Excel สามารถหาบรรทัดว่างได้โดยไม่ต้องมีตัวช่วยครับ
สำหรับการหาบรรทัดว่างสามารถใช้แป้น F5 เข้ามาช่วยได้โดย
- คลิกหัวคอลัมน์ที่ต้องการหาบรรทัดว่าง
- กดแป้น F5 > Special > Blanks > OK
- คลิกขวาลงในเซลล์ใด ๆ ที่ถูกเลือก > Delete > Entire row > OK
สามารถบันทึก Macro ตามการกระทำนี้เพื่อนำไปใช้ในภายหลังได้ครับ
Re: เขียนสูตรในเร้งเนม
Posted: Sun Sep 22, 2013 2:14 pm
by pongpang
ขอบคุณ คนควน มากครับ ผมทำได้แล้ว มัวคิดมากไปถ้าไม่ได้รับการช่วยเหลือคงจะโง่อยู่อีกนาน ครับ