dポイントプレゼントキャンペーン実施中!

こんにちは。
Excel2007を使用しています。

D列にシリアル番号が昇順で入っています。
一つだけの場合も複数の場合もあります
(D5に一つだけシリアル番号0002、D20からD27まで同じシリアル番号0006のように)

AN列に数字が入っています。

D列の同じシリアル番号のAN列の数字の和を求めたいと思います

AN5だけ、(これは合計とは言えませんが)
あるいはAN20からAN27のセル内の数の和ように

合計をBJ列に出力したいです。
BJ5に6とか、BJ20に41とか。

約1万行に約1000のシリアル番号があるので手作業では
時間ばかり掛かってしまいます

うまいやり方をご存じの方お教えください。
よろしくお願いいたします。

A 回答 (4件)

BJ1のセルに



=IF(D1<>D2,SUMIF(D:D,D1,AN:AN),"")

と入力して、下方向にコピー。

この回答への補足

この方法が一番速いですね。

列に散らばって存在する合計を
別紙に転記するのが時間が掛かって
残念なのが・・・

補足日時:2012/12/19 09:11
    • good
    • 0

こんばんは!


横からお邪魔します。
VBAでの一例です。
シートモジュールにしていますので、
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample() 'この行から
Dim i As Long
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row '←2行目~D列最終行まで
If WorksheetFunction.CountIf(Range(Cells(2, "D"), Cells(i, "D")), Cells(i, "D")) = 1 Then
Cells(i, "BJ") = WorksheetFunction.SumIf(Range("D:D"), Cells(i, "D"), Range("AN:AN"))
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

※ データは2行目以降にあるとしています。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

早速試してみます。

お礼日時:2012/12/19 09:08

ご要望のマクロの一例です。



Sub test01()
  Dim myV, myW, myX
  Dim myRng As Range
  Dim i As Long, j As Long, tmp As Long
  Set myRng = Range("D2", Cells(Rows.Count, "D").End(xlUp))
  myW = myRng.Offset(, 36).Value
  myV = myRng.Resize(myRng.Count + 1, 1).Value
  j = UBound(myW, 1)
  ReDim myX(1 To j, 1 To 1)
  For i = LBound(myV, 1) To j
    If myV(i, 1) <> myV(i + 1, 1) Then
      myX(i, 1) = tmp + myW(i, 1)
      tmp = 0
    Else
      tmp = tmp + myW(i, 1)
    End If
  Next
  Range("BJ2").Resize(j, 1).Value = myX
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

早速試してみます。

お礼日時:2012/12/19 09:08

SUMIF関数一発の話のような気がしますけど。


http://kokoro.kir.jp/excel/sumif.html

参照するシリアル番号が多いなら、ピボットテーブルを使うと
これまた一発じゃないかと。
http://www.eurus.dti.ne.jp/yoneyama/Excel2007/ex …
    • good
    • 0

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