2

私の質問には何度も回答が寄せられていますが、解決策がわからないため、ニーズに合わせてカスタマイズすることはできません。

これは、Excel の範囲の各行をStackOverflow ループするソリューションへのリンクです。

Dim rng As Range
Dim row As Range
Dim cell As Range

Set rng = Range("A2:b22")

For Each row In rng.Rows
  For Each cell in row.Cells
    'Do Something
MsgBox cell
  Next cell
Next row

ループ内に入る必要がある私のコードは次のとおりです。最初の列の値を取得し、データをコピーしてから、2 番目の列の値を取得してデータを貼り付ける必要があります。

1 列目と同じ値を使用しています。では、CELL の値が A2 から B2 に変わるのはどの時点でしょうか?

Windows("UnitedOrig.xlsx").Activate
Sheets(CurYearTxtPRAC).Select
Range("A4:U4").Select

ColumnFROM = MyColumnLetter(Cells.Find(What:=cell, After:=ActiveCell,  
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,  
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column)

Range(ColumnFROM & "5:" & ColumnFROM & LastRowPRAC).Select
Selection.Copy

Windows("United.xlsx").Activate
Sheets("PRACS").Select
Range("A1:U1").Select

ColumnTO = MyColumnLetter(Cells.Find(What:=cell, After:=ActiveCell, 
    LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, 
    SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column)
4

2 に答える 2

1

私は最近似たようなことをしました(実際には2つの異なるシートで複数のセルを比較しました)、VBAは初めてですが、範囲の代わりに特定の行/列番号に基づいてループを作成し、.Activateが必要ないことがわかりましたセルの読み取り、書き込み、または変更用 (.Select/.Activate の代わりに使用した以下の方法により、ランタイムが約 300 ~ 400% 高速化されました)。これは非常に簡単な擬似的なコードで、うまくいけば意味があり、必要なものに簡単に変更できるはずです。

Dim oSheet As Excel.Worksheet, vSheet As Excel.Worksheet
Dim oRowCount As Integer, vRowCount As Integer
Dim oRow, vRow
Dim someDataToCopy As String

'Gets last row # for oSheet & vSheet    
oRowCount = oSheet.Cells.SpecialCells(xlLastCell).row
vRowCount = vSheet.Cells.SpecialCells(xlLastCell).row

For oRow = 2 to oRowCount
    someDataToCopy = oSheet.Cells(oRow, 4).Value 'Where 4 is an arbitrary column
    For vRow = 2 to vRowCount
        vSheet.Cells(vRow, 8).Value = someDataToCopy 'Where 8 is an arbitrary column
    Next vRow
Next oRow

行ごとに 1 つのセルだけでなく、行ごとに複数のセルをコピーし、さらに "= oSheet.Cells(oRow, x).Value" を追加する場合は、対応する「一時」データ オブジェクト (たとえば、someDataToCopy2) を追加できます。必要に応じて。コードが何をしているかについて質問がある場合はお知らせください。

于 2013-05-08T21:54:50.067 に答える