• ベストアンサー

マクロについて

マクロで(a-b)^2の計算を行いたいのですが、 どう書けば良いのか分かりません。 (A1-B1)^2、(A1-C1)^2、(A1-D1)^2、・・・・・ (A2-B2)^2、(A2-C2)^2、・・・・・ (A3-B3)^2、・・・・・ と、 250行、250列のデータを同じシートに出力したいのですが、 どのように行えばよいのでしょうか。 どなたか、教えていただけませんか。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 '-------------------------------------------

T21M
質問者

お礼

色々と詳しく書いていただにも関わらず、 お礼が遅くなり、申し訳ありません。 実際に実行してみた結果、 欲しかったデータを取得できました。 本当に有難うございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

こんな平凡な課題を丸投げしているじゃないですか。ここはコードを作らせるところじゃない。規約違反。 ーー データが多いので、テストしてないが 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列のことが有るから。

T21M
質問者

お礼

お礼が遅くなり申し訳ございません。 確かにimogasiさんの言う通りですね・・ これからは、作ってみたコードも一緒に載せて、 分からないところを指摘していただこうと思います。 (また、聞きに来るんかい!!と思われるかもしれませんが・・・汗) とにかく、今回は本当に色々と有難うございました。

回答No.1

このようなことかなあ Range("A261:IP510").Formula = "=($A1-B1)^2"

T21M
質問者

お礼

お礼が遅くなり申し訳ありません。 お早い回答ありがとうございました。 簡潔にまとめていただき、有難うございます。