Page 1 of 1

การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 10:03 am
by tppk
เรียนสอบถาม อ.ทุกท่าน คือผมต้องการ
1. ต้องการเก็บค่าเป็นชุดข้อมูลที่ละ 2 คอลัมน์ (14 ค่า) คือ คอมลัมน์ A , B
2. วน loop อ่านค่าไปทุกคอลัมน์ C,D E,F G,H I,J
3. หลังอ่านค่าเสร็จแต่ละ loop ให้แจ้งเมสเสจ ว่า ข้อมูลชุดที่ 1,2,3,4,5,…,n
4. ตอนนี้ผมทำให้มันวน loop ไปทีละ 2 คอมลัมน์ ยังไม่ได้ ทำได้แค่ 2 คอลัมน์แรก รบกวน อ.ทุกท่าน ปรับปรุง Code ให้หน่อยนะครับ
------------------
Sub Test()
ReDim Data(13)
Dim L As Integer
For i = 2 To 8
For J = 1 To 2
Data(k) = Sheets("Sheet1").Cells(i, J)
k = k + 1
Next J
Next i

MsgBox "ข้อมูลชุดที่ "

End Sub

Re: การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 10:39 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim Data() As Variant
Dim L As Integer, m As Integer
m = Range(Cells(1, 1), Cells(1, Columns.Count).End(xlToLeft)).Columns.Count
ReDim Data(7, m - 1)
For i = 1 To m Step 2
    k = k + 1
    For j = 1 To 7
        Data(j - 1, i - 1) = Sheets("Sheet1").Cells(j + 1, i).Value
        Data(j - 1, i) = Sheets("Sheet1").Cells(j + 1, i + 1).Value
    Next j
    MsgBox "à¡çº¢éÍÁÙŪش·Õè " & k
Next i
การโพสต์ Code ดูตัวอย่างในกฎการใช้บอร์ดข้อ 5 ด้านบนเพื่อให้แตกต่างจากข้อความปกติ สะดวกแก่การอ่านครับ

Re: การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 11:21 am
by tppk
เดี๋ยวจะลองไปศึกษา code ดู ขอบคุณอาจารย์มากนะครับ

Re: การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 11:59 am
by tppk
ุูอาจารย์ครับพอดีผมไม่แน่ใจว่า Code ที่ให้มา เวลาเก็บข้อมูลที่คอลัมน์ A และ ฺB เวลาวน loop โปรแกรมอ่านค่าตามลำดับนี้หรือเปล่าครับ 12,10,20,10,10,20,15,18,14,15,16,18,20,12 พอครบ loop ก็ให้แสดงค่าว่า เก็บข้อมูลชุดที่ 1 Loop ที่สองก็ไปที่ column C และ D พอครบ loop ก็ให้แสดงค่าว่า เก็บข้อมูลชุดที่ 2 พอดีผมกด F8 มันก็ไม่แสดงบอกว่าเก็บค่าตามลำดับแบบไหนครับ หรือถ้าอาจารย์พอมีเวลาช่วยอนุเคราะห์เพิ่ม Code แสดงผลข้อมูลที่เก็บ ไว้ใน Massage box ให้ดูหน่อยนะครับ

Re: การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 12:54 pm
by snasui
:D ข้อมูลเดิมเป็นอย่างไรก็เก็บลักษณะนั้นครับ

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

ถ้าจะดูผลลัพธ์ให้เพิ่ม Code ลงไปตามด้านล่างครับ

Code: Select all

'Other code
For j = 1 To 7
    Data(j - 1, i - 1) = Sheets("Sheet1").Cells(j + 1, i).Value
    Data(j - 1, i) = Sheets("Sheet1").Cells(j + 1, i + 1).Value
    Debug.Print Data(j - 1, i - 1), Data(j - 1, i)
Next j
'Other code
การ Run Code ที่ละ Step ให้คลิกลงไปใน Code แล้วกดแป้น F8 ซ้ำ ๆ จะได้เห็นว่าผลลัพธ์เป็นอย่างไรครับ

Re: การวน Loop ข้อมูลทีละ 2 คอลัมน์

Posted: Sun Mar 10, 2019 2:11 pm
by tppk
Code เก็บข้อมูลได้ถูกต้องครับอาจารย์ พอดีที่ผมต้อง loop ทีละสองคอลัมน์เพื่อที่จะนำค่าข้อมูลในสองคอลัมน์นั้นมาคำนวณต่อครับ ซึ่งในที่นี้ก็เลยสมมุติการคำนวณนั้นเป็น massage box ครับ ผมจึงไม่วนลูปไปทีเดียวทั้งหมด ขอบคุณครับอาจารย์