2015-10-06 104 views
0

我正在嘗試編寫一個將使用if語句將數據從一個地方複製到另一個地方的宏。VBA複製相鄰單元格

Esentially:

如果Range.Cells(I,J).value的= 「你好」 三個細胞,然後複製到單詞 「Hello」

我覺得我可能有使用權偏移?我不是很有經驗,任何幫助將不勝感激!謝謝!

編輯:

這就是我對我的代碼:

For i = 1 To danesRange.Rows.Count 
For j = 1 To danesRange.Columns.Count 
If danesRange.Cells(i, j).Value = "Ins" Then 
    danesRangevalues.Cells(i, j).Copy 
End If 
    Next j 
Next i 

我知道如何複製和使用VBA粘貼,但我不知道如何複製和粘貼一個未知的範圍內,因爲我不清楚這三個單元格的範圍究竟在哪裏,這取決於「INS」值落在哪裏。我到目前爲止只會複製相鄰的單元格,而不是全部三個。

+2

到目前爲止您創建的代碼在哪裏?記錄一個宏,將三個單元格複製到一個單獨的工作表中,以便爲您提供一個開始! – MiguelH

+0

有些東西令我困擾:如果你從第一列 - 逐列 - 到最後一列,並且可能複製一個單元格**和**三個相鄰單元格(在接下來的三列中),那麼它不會使在下一列繼續搜索很有意義(除非您想複製冗餘數據)。但也許有一些我還沒有。 – Ralph

+0

你要把它放在哪裏?你已經有了一個列引用j,所以你可以設置'danesRange.Cells(i,j + 3)= danesRange.Cells(i,j).Value'或類似的東西。或者如果有多個單元格,將它們串起來。一個可靠的例子會很有幫助。 – Liss

回答

1

實際上,OffsetResize是你需要在這裏。

所以更改此設置:

If danesRange.Cells(i, j).Value = "Ins" Then 
     danesRangevalues.Cells(i, j).Copy 
    End If 

這樣:

If danesRange.Cells(i, j).Value = "Ins" Then danesRange.Cells(i, j).Offset(,1).Resize(1, 3).Copy 

所以,你一列偏移danesRange.Cells(i,j),然後進行一系列3列長。

我同意拉爾夫的評論。這樣設置的方式,它似乎是跨列複製冗餘數據。

相關問題