web-dev-qa-db-ja.com

Excelで列を自動入力するマクロ

列を数式で埋めるマクロをExcelで記録しました。ただし、これはテストデータで使用していた範囲に制限されています。つまり、別の(より長い)データセットを使用すると、データの最後の行まで入力されません。

ActiveCell.FormulaR1C1 = "Term"
Range("H2").Select
ActiveCell.FormulaR1C1 = "=ROUND((RC[-1]-RC[-2])/30,0)"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H11")
Range("H2:H11").Select

上記の場合、範囲はH2:H11に制限されていますが、データセットに入力されたデータの最後の行まで自動入力する必要があります。これは、列Aが入力されているかどうかを確認することで実行できますが、機能するコードが見つかりません。簡単なことは何もありません。

データは複数の列を持つ10,000行であり、マクロのこの特定の部分は数式を空白の列に入力していますが、10,000行のみを入力したいと思います。列Aにはデータが含まれているので、これを使用して数式を自動入力する範囲を定義するにはどうすればよいですか?

ここで他の回答がExcelでデータをテーブルに変換することについて言及しているのを見てきましたが、10,000行以上のデータセットを扱っているため、これを行うのは気が進まないため、多くの追加の書式設定などが追加されます。 。

2
newbie

現在のワークシートの最後の行番号を返すActiveSheet.UsedRange.Rows.Countを試すことができます。行Aはチェックしませんが、最後の行までデータを入力するのに適した方法です。

例えば

lastRow = ActiveSheet.UsedRange.Rows.Count
' ... something else ...
Selection.AutoFill Destination:=Range("H2:H" & lastRow)

作業するワークシートを指定する場合は、ActivesheetWorksheetオブジェクトに置き換えることができます。

0
Kenneth L