Excel VBAで、あるセル範囲に一気に数式を入れる方法がわかりません。 詳しい方、どうぞ教えてください。 やりたいことは↓です。

画像

Visual Basic | Excel218閲覧

ベストアンサー

0

ご教示ありがとうございます。 "=ROUND(sheet1!C2,3)"のC2のC(列)も変数になるため、 R1C1で記述しようと画策していますが上手くいきません…。 お手数ですが、良い方法をご存じでしたら教えてくださいm(__)m

ThanksImg質問者からのお礼コメント

皆さんの良いとこ取りをさせていただいたのですが、 最終形がtak********さんのものに1番近かったので ベストアンサーとさせていただきました。 皆様、ありがとうございました。

お礼日時:6/24 15:45

その他の回答(4件)

0

あなたのしたいことはセルに数式をいれたいのですよね? あなたのプログラムは数式でなく値を入れているようですが、それはあなたのしたいことなのですか?

書き方が下手で申し訳ありません。 Sheet2には小数点以下3桁に丸めた後の「値」を入れたいです。 画像はあくまでも > VBAを使わずに関数で処理した場合のイメージ でした。

0

添付図のような結果でどうでしょうか。 マクロの実行は、シート2で実行ください。 Sub 数値の丸め転記() With Worksheets("Sheet1") Dim Ca As Integer Dim Cb As Integer Dim n As Integer For Ca = 3 To .Cells(1, Columns.Count).End(xlToLeft).Column If .Cells(1, Ca).Value <> "" Then For Cb = 5 To Cells(1, Columns.Count).End(xlToLeft).Column If .Cells(1, Ca).Value = Cells(1, Cb).Value Then For n = 2 To .Cells(Rows.Count, Ca).End(xlUp).Row Cells(n, Cb).Value = WorksheetFunction.Round(.Cells(n, Ca).Value, 3) Next End If Next End If Next End With End Sub

画像
0

Sub a() 'Sheet1,Sheet2のどちらのシートからでも実行可 't1,t2,t3・・・はどちらのシートも1行目 'シート2にあるt1,t2,t3・・・はシート1にもすべて存在していることが前提です Dim c As Range Dim myCol As Long Dim eRow As Long Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") For Each c In ws2.Rows(1).SpecialCells(xlCellTypeConstants, xlTextValues) On Error Resume Next myCol = WorksheetFunction.Match(c.Value, ws1.Rows(1), 0) On Error GoTo 0 If myCol <> 0 Then eRow = ws1.Cells(Rows.Count, myCol).End(xlUp).Row With c.Offset(1, 0).Resize(eRow - 1, 1) .FormulaR1C1 = "=ROUND(Sheet1!RC[" & myCol - c.Column & "],3)" .Value = .Value End With End If Next c End Sub

ご教示ありがとうございます。 With関数の .FormulaR1C1 = "=ROUND(Sheet1!RC[" & myCol - c.Column & "],3)" のところでデバッグが発生してしまいました。 (値の更新を求められ、ファイルを開くダイアログが立ち上がる。) 実際はSheet1の名前はSheet1ではなく、 Worksheets("グラフ用データ")なので ws1にすれば良いのか?と変えてみましたが、改善されませんでした…。

0

ExcelのVBAはシートへのアクセス処理がとても重いので、できる限り一括にまとめると早くなります。 Variant型変数にSheet1のセル範囲のデータを丸々格納して、 Variant型変数をFor文で回してデータ編集(桁丸め処理)をして、 Variant型変数をSheet2のセル範囲に貼り付けます。