• ベストアンサー

横に並んだ数値を1つおきに指定回数足し算したい

winXP エクセル2002です。 1行目に数値が100個入力されているとします。 この数値を指定回数、1つおきに足し算をしたいのです。 たとえば、A2に回数を指定する数値、A3に足し算をした結果を表示するとして、 A2に5といれたらA3にはA1+C1+E1+G1+I1の結果がほしいのです。 何かいい関数はありますでしょうか マクロでもかまいません。 よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

A3=SUMPRODUCT((COLUMN($A$1:$CV$1)<$A$2*2)*(MOD(COLUMN($A$1:$CV$1),2)=1),$A$1:$CV$1)

muushuke
質問者

お礼

御礼が遅くなってすみません。 無事できました。ありがとうございました。

その他の回答 (4)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.5

=SUMPRODUCT(MOD(COLUMN(1:1),2)*(COLUMN(1:1)<A2*2)*1:1)

muushuke
質問者

お礼

御礼が遅くなってすみません。 無事できました。ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

次の方法は如何でしょうか。 A3セルに=SUM(IF(MOD(INDIRECT(ADDRESS(1,1,,1)):INDIRECT(ADDRESS(1,(A2)*2,,1)),2)=1,INDIRECT(ADDRESS(1,1,,1)):INDIRECT(ADDRESS(1,A2*2,,1))))

muushuke
質問者

お礼

御礼が遅くなってすみません。 ちょっと欲しかったものとは違うようです。。。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

ユーザ関数が汎用的に使えると思います  =DigitSUM(開始セル,回数) 質問の例なら =DigitSUM(A1,A2) です Private Function DigitSUM(ByVal argCell As Range, ByVal argTimes As Integer) As Long Dim idx As Long For idx = 0 To argTimes - 1 DigitSUM = DigitSUM + argCell.Offset(0, idx * 2) Next idx End Function

muushuke
質問者

お礼

御礼が遅くなってすみません。 無事できました。ありがとうございました。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.2

マクロなら次の通り。 for i= 1 to cells(2,1) cells(3,1)=cells(3,1)+cells(1,i*2-1) next

muushuke
質問者

お礼

御礼が遅くなってすみません。 無事できました。ありがとうございました。

関連するQ&A