1

長い間答えを見つけようとしてきたvbaの質問があります。私はマクロを実行する多数のクライアントから多数のスプレッドシートを持っています。コーディングは初めてで、何をする必要があるかをほとんど理解することができました。私のクライアントは毎月データを送信し、毎月行数が変わります。列は変わりませんが、データの量は変わります。前のマクロで、列全体を選択して会社のテンプレートにコピー アンド ペーストしました。これは必須のものにはうまく機能しましたが、いくつかの非常に長いコードとマクロが作成され、長い時間がかかりました。特定の列にある行数をカウントし、そこから各列に数えた行数をコピーして貼り付けるコードを書きたいと思います。すべての行にデータが含まれている列はごくわずかです。そのため、特定の 1 列の行を数え、そのすべての列に適用する必要があります。どんな助けでも大歓迎です。ありがとうトニー

こんにちはみんな、まだこれに問題があります。私が使用しているコードを以下に貼り付けました。実行できない理由がわかる場合は、助けてください。

Windows("mmuworking2.xlsx").Activate
 Workbooks.Open Filename:= _
        "C:\Users\I53014\Desktop\QC DOCS\Sample_Data_Import_Template.xlsx"
 Windows("mmuworking2.xlsx").Activate
    Dim COL As Integer
    COL = Range("A:DB").Columns.Select
    **Range(Cells(2, COL), Cells(Range("E" & Rows.Count).End(xlUp).Row, COL)).Copy Destination:=Windows("Sample_Data_Import_Template.xlsx").Range("A2")**
    Range("A2").Paste
    Range("A5000").Formula = "='C:\Users\I53014\Desktop\[Import_Creator.xlsm]sheet1'!$B$2"
    ActiveWorkbook.SaveAs Filename:="Range (A5000)", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

止まるところを太字にしました。

4

1 に答える 1

9

これにより、データを含む最後の行が得られます。

ActiveSheet.UsedRange.Rows.Count

これにより、特定の列の最後の行が得られます。

Range("B" & Rows.Count).End(xlUp).Row

これは、ワークシートの最初の 3 列のすべての行をコピーする方法の例です。

Sub Example()
    Dim LastRow As Long

    LastRow = ActiveSheet.UsedRange.Rows.Count
    Range(Cells(1, 1), Cells(LastRow, 3)).Copy Destination:=Sheet2.Range("A1")
End Sub

どちらの方法にも注意点があるので注意が必要です。

ActiveSheet.UsedRangeセルが適切にクリーンアップされていない場合、データのないセルが含まれる可能性があります。

Range("A" & Rows.Count).End(xlUp).Row指定された列の行数のみを返します。

Rows(Rows.Count).End(xlUp).Row最初の列の行数のみを返します。

編集例を追加しました
Edit2例をもう少し明確に変更しました

この例では、このデータがあるとしましょう
ここに画像の説明を入力

この方法を使用して、他の列を列 A の行数までコピーできます。

Sub Example()
    Dim Col as Integer
    Col = Columns("C:C").Column

    'This would copy all data from C1 to C5
    'Cells(1, Col) = Cell C1, because C1 is row 1 column 3
    Range(Cells(1, Col), Cells(Range("A" & Rows.Count).End(xlUp).Row, Col)).Copy Destination:=Sheet2.Range("A1")
End Sub

最終結果は次のようになります。
ここに画像の説明を入力

于 2013-07-24T19:28:52.757 に答える