Page 1 of 1
รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sat Nov 05, 2016 7:10 pm
by kio2002
สวัสดีสมาชิกทุกท่านครับ
พอดีผมจะสร้างปุ่มคลิกแล้วรันตัวเลข ให้ถึงแถวตามเงื่อนไขที่กำหนด
โดยจะให้รันเรียง 1,2,3,4,....ลงไปเรื่อยๆครับ
สิ่งที่ต้องการคือ
เมื่อคลิกปุ่ม รันตัวเลข อยากให้โปรแกรมหาคำว่า stop ที่อยู่ใน column A แล้วให้รันตัวเลขถึงแถวที่อยู่บนคำว่า stop
เช่นในไฟล์ที่แนบมา คำว่า stop จะอยู่แถวที่20 แล้วอยากให้โปรแกรมรันถึงแค่แถวที่19
เหตุผลที่อยากให้คำว่า stop ก่อน ก็เนื่องจากคำว่า stop บางครั้งอาจจะอยู่แถวที่25 หรือแถวที่26 เพราะบางครั้งผมมีการลบแถวบางแถวทิ้งไป หรือเพิ่มแถวขึ้นมานั้นเอง
รบกวนช่วยปรับcodeให้หน่อยครับ
Code: Select all
Sub Button1_Click()
Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Range("A2").Select
ActiveCell.FormulaR1C1 = "2"
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A15"), Type:=xlFillDefault
Range("A1:A15").Select
End Sub
ขอบคุณมากครับ
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sat Nov 05, 2016 7:51 pm
by snasui

ตัวอย่าง Code ครับ
Code: Select all
Range("a1", Range("a" & Rows.Count).End(xlUp).Offset(-1, 0)).Select
Selection.Formula = "=Row()"
Selection.Value = Selection.Value
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sun Nov 06, 2016 5:28 pm
by kio2002
ผมปรับcodeให้เริ่มรันเลข1 ที่เซลล์A13 มันไม่ยอมรันเลข1ให้ มันรันเป็นเลข13เลยซะงั้น
Range("a13", Range("a" & Rows.Count).End(xlUp).Offset(-1, 0)).Select
และอยากให้รันใน sheet ที่กำหนดเช่น sheet1
รบกวนช่วยปรับให้อีกทีครับ
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sun Nov 06, 2016 5:38 pm
by snasui

สามารถใช้
With...End With ช่วยได้ครับ
ลองปรับมาเองก่อน ได้เท่าไรก็เท่านั้นครับ
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sun Nov 06, 2016 8:20 pm
by kio2002
กำหนดให้รันที่ sheet1 เขียนเพิ่มแบบนี้ถูกไมครับ
Code: Select all
Sub Button1_Click()
With Sheets("Sheet1")
Range("a13", Range("a" & Rows.Count).End(xlUp).Offset(-1, 0)).Select
Selection.Formula = "=Row()"
Selection.Value = Selection.Value
End With
End Sub
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Sun Nov 06, 2016 8:36 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
With Sheets("Sheet1")
With .Range("a13", .Range("a" & .Rows.Count).End(xlUp).Offset(-1, 0))
.Formula = "=Row()-Row($13:$13)+1"
.Value = .Value
End With
End With
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Mon Nov 07, 2016 8:34 am
by kio2002
ผมนำcodeไปใช้จริงแล้วครับ
แต่มันรันทับคำว่า stop เลยลงไปอีก ผมพิมพ์ stop ไว้ที่เซลล์A75 แต่โปรแกรมมันรันถึงเซลล์A80
รบกวนช่วยดูให้อีกทีครับ
ไฟล์แนบมีครับ
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Mon Nov 07, 2016 6:14 pm
by snasui

ผมทดสอบแล้วสามารถใช้ได้เป็นปกติ ไม่พบว่ามีปัญหาตามที่แจ้งมาครับ

Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Mon Nov 07, 2016 7:25 pm
by kio2002
excel คนละเวอร์ชั่น น่าจะเกี่ยวไหมครับ หรือต้องไปตั้งค่าการจัดรูปแบบเซลล์ไหมครับ
เป็นแบบนี้ครับ อาจารย์ได้โหลดไฟล์แนบใหม่ไปทดสอบหรือยังครับ
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Mon Nov 07, 2016 7:56 pm
by snasui

Code นั้นเป็น Code ง่าย ๆ ไม่ได้มีความซับซ้อนแต่อย่างใดครับ
ไฟล์ที่แนบมานั้นผมลองทดสอบอยู่แล้วไม่มีปัญหาครับ
การทำงานของ Code นั้นเป็นการเลือกเซลล์ A13 จนถึงเซลล์ก่อนคำว่า Stop จากนั้นกำหนดสูตรเพื่อให้แสดงค่าลำดับ แล้วแปลงสูตรเป็นค่าคงที่
อีกตัวอย่าง Code ใช้การ Looping เข้ามาช่วยตามด้านล่างครับ
Code: Select all
With Sheets("data")
For i = 1 To .Range("a13", .Range("a" & .Rows.Count) _
.End(xlUp).Offset(-1, 0)).Rows.Count
.Range("a13").Cells(i).Value = i
Next i
End With
Re: รันตัวเลข ถึงแถวตามเงื่อนไขที่กำหนด
Posted: Wed Nov 16, 2016 8:28 pm
by kio2002
ตอนนี้ผมนำทั้ง2codeไปใช้ ก็ยังไม่ได้ มันก็ยังรันเลขเลยลงไปอีก แต่ได้ลองใช้กับcolumnอื่น ก็ได้ปกติ
codeมันรันถึงเซลล์A81 ผมเลยแก้โดยการ offset(-7, 0)).rows.count ซะเลย
ขอบคุณท่านอาจารย์มากๆครับ หากติดตรงไหน จะมาถามใหม่นะครับ