1

以下のコードはエラーになりますが、範囲を変更する.Range(A2:A9999)と機能します...

しかし、それは醜いです。A2から下の列(A)のすべてのデータを取得する方法はありますか? それをB2にコピーしますか?

Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value
4

4 に答える 4

1

列 A で最後に入力されたセルを見つけることで、コピーする内容をより正確に知ることができます。

これは、src シートの列 A の内容を tgt シートの列 B にコピーします。

Sub CopyOneColumnToAnother()
    Dim wb As Workbook
    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim lastRow As Long

    Set wb = ThisWorkbook
    Set src = wb.Sheets("Sheet5")
    Set tgt = wb.Sheets("Sheet6")
    lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row

    tgt.Range("B2:B" & lastRow).Value = src.Range("A2:A" & lastRow).Value
End Sub

エラーが発生する理由は、範囲に有効な終点がないためです。Range ([firstcell]:[lastcell])は正しい構文であるため、ソース範囲とターゲット範囲の両方に最後のセルの行を追加する必要があります。

コードが実行されたとしても、望んでいないことに注意してください。列 A を列 B に等しく設定しています。ステートメントの左側と右側を反転する必要があります。

于 2013-07-10T22:00:54.253 に答える
1

1 行にまとめるには、次のようにします。

Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2")

ちなみに、値だけでなくフォーマットもすべてコピーします。それを実行するには、シート AA がアクティブになっている必要があります。

于 2013-07-10T22:01:38.600 に答える
1
Sub CopyValues()

    Dim rValues As Range

    With Sheet1
        Set rValues = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    End With

    rValues.Offset(, 1).Value = rValues.Value

End Sub
于 2013-07-10T22:06:28.327 に答える
0

列全体をコピーして、B1 にあったものを再挿入してみませんか。

Range("A:A").Copy Columns("B:B")
Range("B1").Value = "Whatever"

さらに詳細に:

Dim previous 'As Variant (or whatever it is)

previous = Worksheets("BB").Range("B1").Value
Worksheets("AA").Range("A:A").Copy Worksheets("BB").Columns("B:B")
Worksheets("BB").Range("B1").Value = previous

あなたが保持したい列Bにさらに下のデータがない限り(あなたは述べていません)。

于 2013-07-10T22:08:57.993 に答える