- ベストアンサー
マクロについて
マクロで(a-b)^2の計算を行いたいのですが、 どう書けば良いのか分かりません。 (A1-B1)^2、(A1-C1)^2、(A1-D1)^2、・・・・・ (A2-B2)^2、(A2-C2)^2、・・・・・ (A3-B3)^2、・・・・・ と、 250行、250列のデータを同じシートに出力したいのですが、 どのように行えばよいのでしょうか。 どなたか、教えていただけませんか。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 TestMacro1 では、#1さんの方法と同じです。 そのまま同じ場所に数式を入れると、循環参照になってしまいます。 同じシートなら、ずらす方法もありますが、これは、Sheet2側に書き出します。 TestMacro2 では、上書きにして書き出します。 '------------------------------------------- Sub TestMacro1() '数式で書き込む(ただし、Sheet1--->Shhet2) Application.ScreenUpdating = False Worksheets("Sheet2").Range("A1:IP250").Formula = "=(Sheet1!RC1-Sheet1!RC[1])^2" Application.ScreenUpdating = True End Sub '------------------------------------------- Sub TestMacro2() '上書き方式 Dim Ar As Variant Dim Ar2 As Variant Dim Ar3() As Variant Dim i As Long Dim j As Long '上限数 Const NUM As Long = 250 ReDim Ar3(NUM - 1) With ActiveSheet Ar = .Range("A1:A" & NUM).Value Application.ScreenUpdating = False For i = 1 To NUM Ar2 = .Range(.Cells(1, i + 1), .Cells(NUM, i + 1)).Value For j = 1 To NUM Ar3(j - 1) = (Ar(j, 1) - Ar2(j, 1)) ^ 2 Next j .Cells(1, i).Resize(NUM).Value = WorksheetFunction.Transpose(Ar3()) Next i End With Application.ScreenUpdating = True End Sub '-------------------------------------------
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
こんな平凡な課題を丸投げしているじゃないですか。ここはコードを作らせるところじゃない。規約違反。 ーー データが多いので、テストしてないが Sub test01() d = Range("A65536").End(xlUp).Row For i = 1 To d x = Cells(i, "A") For j = 2 To 250 y = Cells(i, j) z = (x - y) ^ 2 Cells(i, j + 258) = z Next j Next i End Sub こんな風かな。 エクセルのバージョンを書くこと。 256列のことが有るから。
お礼
お礼が遅くなり申し訳ございません。 確かにimogasiさんの言う通りですね・・ これからは、作ってみたコードも一緒に載せて、 分からないところを指摘していただこうと思います。 (また、聞きに来るんかい!!と思われるかもしれませんが・・・汗) とにかく、今回は本当に色々と有難うございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
このようなことかなあ Range("A261:IP510").Formula = "=($A1-B1)^2"
お礼
お礼が遅くなり申し訳ありません。 お早い回答ありがとうございました。 簡潔にまとめていただき、有難うございます。
お礼
色々と詳しく書いていただにも関わらず、 お礼が遅くなり、申し訳ありません。 実際に実行してみた結果、 欲しかったデータを取得できました。 本当に有難うございました。