iT邦幫忙

0

EXCEL的問題2

https://ithelp.ithome.com.tw/upload/images/20190107/20114436NKpzSQz8bc.pngRange("A1").Select
For C0 = 1 To 500
For i = 1 To 12
If (Mid(Range("C" & C0), 1, 2) = "單號") Then
Range("A" & i) = Mid(Range("C" & C0), 8, 8)
If (Range("A" & i) <> "") Then
Range("A" & i + 1).Select
End If
End If
Next
Next
我不要單號:及採購日期那些
所以用Mid 把它先放到A1 所以正常的話
應該A1的儲存格是122600001
A2的儲存格是找到單號並擷取的結果
但是一直跑出最後一個A12並且a1~a11也被a12的值取代
請高手們告訴我 要怎改 圖片是有問題的結果

idnoidno iT邦新手 5 級 ‧ 2019-01-07 13:08:22 檢舉
建議可以把擋案丟上來讓想幫忙的人可以盡快了解你的需求
@idnoidno 抱歉
這個網頁上傳檔案很麻煩 我 也不會 所以你會上傳檔案 請教一下 多謝
pcw iT邦研究生 4 級 ‧ 2019-01-07 23:35:04 檢舉
用F5逐行執行來偵錯
0
來杯拿鐵
iT邦新手 4 級 ‧ 2019-01-08 00:35:14
最佳解答

樓主程式是同樣單號填12次,填完以後再選取欄位。
第二個迴圈太外層,選取欄位慢了一拍。

Range("A1").Select'起始選取

'從C1到C500尋找單號
For C0 = 1 To 500
    'A1到A12(填入單號值、選取)
    For i = 1 To 12
        '發現單號後,A1到A12儲存格全部填入一樣單號
        If (Mid(Range("C" & C0), 1, 2) = "單號") Then
            Range("A" & i) = Mid(Range("C" & C0), 8, 8)
                '這格有值的話,選取下格
                If (Range("A" & i) <> "") Then
                Range("A" & i + 1).Select
                End If
        End If
    Next
Next

看的出來有努力過

選取A1
從指定欄位逐列尋找單號for
找到單號if
然後現在選取儲存格有值嗎?if
有,選取下一格(Selection.Offset(1, 0).Select)
現在選取格填入單號=

多謝你的提示我改變寫法 就完全正常 再次感謝

不客氣,寫註解有助於釐清觀念

0
pico_chang
iT邦新手 5 級 ‧ 2019-01-07 17:09:36

Range("A" & i + 1).Select
改成 Range("A" & (i + 1)).Select

0
pcw
iT邦研究生 4 級 ‧ 2019-01-08 09:25:04

試試看合不合用

Dim i as Integer

i = 0
For C0 = 1 To 500
    If (Mid(Range("C" & C0), 1, 2) = "單號") Then
        Range("A1").Offset(i).Value = Mid(Range("C" & C0), 8, 8)
        i = i + 1
    End If
Next C0

太感謝了 我照來杯拿鐵那位提示去改變寫法 已經完成了 不過和你的更精簡的不一樣 再次多謝

idnoidno iT邦新手 5 級 ‧ 2019-01-08 11:21:12 檢舉

哇,好多人回覆,也學到了一些知識
不過也野人獻曝一下
RANGE的方式建議可改為CELLS,也許比較好也說不定

我要發表回答

立即登入回答