[英]Copy and paste data based on text in cell next to it
我希望代碼檢查“A3:AAA3”范圍內的每個單元格中的特定文本。 如果單元格包含該文本,我希望它將右側單元格中的文本復制到上面的兩行(參見下面的說明):
復制的文本將是一個日期。
我已經有一段代碼用這個文本標識每一列並設置列寬:
Dim c as Range
For Each c In Range("A3:AAA3").Cells
If c.Value = "TEXT" Then
c.EntireColumn.ColumnWidth = 4
End If
Next c
如果單元格已被選中,我可以使用復制和粘貼:
Dim s As Range
Set s = Selection.Cells(1)
s.Offset(0, 1).Copy
s.Offset(-2, 0).PasteSpecial xlPasteAll
而且我覺得我應該能夠將兩者組合成如下所示的內容,以便它選擇帶有文本的單元格,並復制並粘貼其旁邊的單元格,然后循環到下一個單元格(如下所示?) ,但我所有的嘗試都沒有奏效——它沒有出現錯誤消息,只是沒有做任何事情。
Dim c As Range
For Each c In Range("A3:AAA3").Cells
If c.Value = "TEXT" Then
c.Select
c.Offset(0, 1).Copy
c.Offset(-2, 0).PasteSpecial xlPasteAll
End If
Next c
想法? 我確定這是一個非常簡單的解決方案,但我有點卡住了。
c.Value = "TEXT"
將檢查該值是否完全是TEXT
但在您的示例中它是1 TEXT
所以它只是像TEXT
。 所以我們需要使用占位符之like
的運算符。
Dim c As Range
For Each c In Range("A3:AAA3").Cells
If c.Value Like "*TEXT*" Then
c.Offset(0, 1).Copy Destination:=c.Offset(-2, 0)
End If
Next c
請注意,您可以在一行中復制/粘貼。
And you don't need c.Select
(see How to avoid using Select in Excel VBA .)
請注意,Excel 不知道此范圍在哪個工作表中Range("A3:AAA3").Cells
更好地指定工作表,如ThisWorkbook.Worksheets("MySheet").Range("A3:AAA3").Cells
最后,在所有情況下,使用 F8 逐步調試代碼會很有幫助,這樣您就可以查看代碼在每一步中的作用,並調查變量的值以查看錯誤的確切位置。
無關:
我什至更喜歡以下風格:
c.Offset(ColumnOffset:=1).Copy Destination:=c.Offset(RowOffset:=-2)
讀起來更直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.