この人頭いいなと思ったエピソード

下記マクロは先ほど教えて頂いたマクロを少し変更して
指定セル値の合計をそれぞれ
セル「Y8=B4、E4・Y14=B10、E10・Y20=B16、E16中間省略Y116=B112、E112・Y122=B118、E118」に表示出来るようにしましたが、
マクロを実行すると
上記の全てのセルに
Y8の計算結果が表示されてしまいます。
解決方法を教えてください。
現状のマクロ
Sub Macro1()
Dim i As Long
Dim r As Long
Dim str1 As String
Dim str2 As String
Sheets("Table 2").Select
For i = 1 To 20
r = i * 6 + 2
str1 = "$Y$" & r
str2 = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$4,,CHAR(10)),--TEXTSPLIT($E$4,,CHAR(10))),2),"""")"

Range(str1) = str2
Next

End Sub
以上となります。
よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます。
    元のマクロコードは
    Sub 室面積()
    Sheets("Table 2").Select
    Range("$Y$8").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$4,,CHAR(10)),--TEXTSPLIT($E$4,,CHAR(10))),2),"""")"
    Range("$Y$14").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$10,,CHAR(10)),--TEXTSPLIT($E$10,,CHAR(10))),2),"""")"
    文字数の関係で次になります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/09/10 14:25
  • Range("$Y$20").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$16,,CHAR(10)),--TEXTSPLIT($E$16,,CHAR(10))),2),"""")"
    Range("$Y$26").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$22,,CHAR(10)),--TEXTSPLIT($E$22,,CHAR(10))),2),"""")"
    Range("$Y$32").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$28,,CHAR(10)),--TEXTSPLIT($E$28,,CHAR(10))),2),"""")"

      補足日時:2024/09/10 14:26
  • 途中省略
    Range("$Y$122").Formula = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$118,,CHAR(10)),--TEXTSPLIT($E$118,,CHAR(10))),2),"""")"
    以上となります。
    よろしくお願いいたします。

      補足日時:2024/09/10 14:28

A 回答 (3件)

以下のようにしてください。


B列、E列はY列より4行小さいので、Y列の値から4を引いた値を採用しています。(x=r-4の箇所です)

Sub Macro1()
Dim i As Long
Dim r As Long
Dim x As Long
Dim str1 As String
Dim str2 As String
Sheets("Table 2").Select
For i = 1 To 20
r = i * 6 + 2
x = r - 4
str1 = "$Y$" & r
str2 = "=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$" & x & ",,CHAR(10)),--TEXTSPLIT($E$" & x & ",,CHAR(10))),2),"""")"
Range(str1) = str2
Next
End Sub
    • good
    • 0
この回答へのお礼

この度も助けて頂き、ありがとうございました。
上手くできました。
何時も親切に教えて頂けまして、感謝いたします。

お礼日時:2024/09/10 14:54

No1です。


Y8=B4、E4・Y14=B10、E10・Y20=B16、E16 ・・・ Y116=B112、E112・Y122=B118、E118
にしたいということですね。
見落としていました。No1は無視してください。
失礼しました。
    • good
    • 0

Y8の内容


=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$4,,CHAR(10)),--TEXTSPLIT($E$4,,CHAR(10))),2),"")

Y14の内容
=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$4,,CHAR(10)),--TEXTSPLIT($E$4,,CHAR(10))),2),"")

Y20の内容
=IFERROR(ROUND(SUMPRODUCT(--TEXTSPLIT($B$4,,CHAR(10)),--TEXTSPLIT($E$4,,CHAR(10))),2),"")

が、同じになっています。
どのようにされたいのでしょうか。
Y8,Y14,Y20毎に提示してください。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A