iT邦幫忙

0

VBA - 如何解決FOR NEXT的迴圈問題 ( 求救)

  • 分享至 

  • xImage

情境 : 根據Sheet2的C列的數字,每一打開相應數字的工作表在裡面把A列的eamil address(A2開始)合併到B列(請看圖),然後結束。

問題 : 發現每完成迴圈一次,下一次的工作表的B列合併資料就會增加一倍(請看圖中的紅圈),請問如何阻止這個問題? 請教各位大大~ 謝謝。

https://ithelp.ithome.com.tw/upload/images/20221020/2015416820zqV2C9Gc.jpg
https://ithelp.ithome.com.tw/upload/images/20221020/20154168vHiL7II9ro.jpghttps://ithelp.ithome.com.tw/upload/images/20221020/20154168fRatwt1PU8.jpghttps://ithelp.ithome.com.tw/upload/images/20221020/20154168iUdA4kINk5.jpg

Sub test1()
'
n = Sheets("Sheet2").Range("C500").End(xlUp).Row
For i = 2 To n Step 1
Sheets(Sheets("Sheet2").Cells(i, "C").Value).Select
    If IsEmpty(Range("A3")) Then
        Range("A2").Select
        Selection.Copy
        Range("B2").Select
        ActiveSheet.Paste
    Else
       For m = 2 To Range("A2").End(xlDown).Row
        m2 = m2 & Cells(m, "A") & ";"
    Next m
        Range("B" & Range("A2").End(xlDown).Row) = Left(m2, Len(m2) - 1)
    End If
Next i
    
End Sub

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Misty0723
iT邦新手 3 級 ‧ 2022-10-20 23:10:47

M2沒有重新給值,所以每跑一次迴圈會一直累加

Sub test1()
'
n = Sheets("Sheet2").Range("C500").End(xlUp).Row
For i = 2 To n Step 1
m2="" <--- 加這行
Sheets(Sheets("Sheet2").Cells(i, "C").Value).Select
If IsEmpty(Range("A3")) Then
Range("A2").Select
Selection.Copy
Range("B2").Select
ActiveSheet.Paste
Else
For m = 2 To Range("A2").End(xlDown).Row
m2 = m2 & Cells(m, "A") & ";"
Next m
Range("B" & Range("A2").End(xlDown).Row) = Left(m2, Len(m2) - 1)
End If
Next i

End Sub

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-10-21 10:45:12

加一列試試看

If IsEmpty(Range("A3")) Then
        Range("A2").Select
        Selection.Copy
        Range("B2").Select
        ActiveSheet.Paste
    Else
            m2 = ""'加這列
       For m = 2 To Range("A2").End(xlDown).Row
        m2 = m2 & Cells(m, "A") & ";"
    Next m

我要發表回答

立即登入回答