Excelシリアル番号別に数の和を算出する方法

このQ&Aのポイント
  • Excelを使用して、D列に昇順で並んだシリアル番号と、それに対応するAN列の数字の和を求める方法を教えてください。
  • AN5の数字の和を求める方法や、AN20からAN27までのセル内の数字の和を求める方法を教えてください。
  • Excelには約1万行に約1000のシリアル番号があり、手作業では時間がかかってしまいます。効率的な方法を教えてください。
回答を見る
  • ベストアンサー

Excelシリアル番号別に数の和を算出するマクロ

こんにちは。 Excel2007を使用しています。 D列にシリアル番号が昇順で入っています。 一つだけの場合も複数の場合もあります (D5に一つだけシリアル番号0002、D20からD27まで同じシリアル番号0006のように) AN列に数字が入っています。 D列の同じシリアル番号のAN列の数字の和を求めたいと思います AN5だけ、(これは合計とは言えませんが) あるいはAN20からAN27のセル内の数の和ように 合計をBJ列に出力したいです。 BJ5に6とか、BJ20に41とか。 約1万行に約1000のシリアル番号があるので手作業では 時間ばかり掛かってしまいます うまいやり方をご存じの方お教えください。 よろしくお願いいたします。

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.2

BJ1のセルに =IF(D1<>D2,SUMIF(D:D,D1,AN:AN),"") と入力して、下方向にコピー。

sherman
質問者

補足

この方法が一番速いですね。 列に散らばって存在する合計を 別紙に転記するのが時間が掛かって 残念なのが・・・

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 横からお邪魔します。 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

sherman
質問者

お礼

ご回答ありがとうございます。 早速試してみます。

  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.3

ご要望のマクロの一例です。 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

sherman
質問者

お礼

ご回答ありがとうございます。 早速試してみます。

  • FEX2053
  • ベストアンサー率37% (7987/21354)
回答No.1

SUMIF関数一発の話のような気がしますけど。 http://kokoro.kir.jp/excel/sumif.html 参照するシリアル番号が多いなら、ピボットテーブルを使うと これまた一発じゃないかと。 http://www.eurus.dti.ne.jp/yoneyama/Excel2007/excel2007-piv.html

関連するQ&A

  • Excel条件付きの和を求めたい

    こんにちは。質問No7850523でお世話になりました。 http://okwave.jp/qa/q7850523.html このときのベストアンサーには以下の式を選びました =IF(D1<>D2,SUMIF(D:D,D1,AN:AN),"") この質問にもう一つ条件が付きましたので 解決方法をお教えください。 Excel2007を使用しています。 D列にシリアル番号が昇順で入っています。 L列に数字(回数)が入っています AN列に数字(個数)が入っています。 以下わかりやすく回数毎に改行してあります 実際は空の行はありません D-----L--AN---BI 0001--1--5----5 0001--1--2----2 0002--1--2----12 0002--2--3 0002--3--1 0002--4--6 0002--1--1----9 0002--2--5 0002--3--3 0003--1--0----8 0003--2--3 0003--3--5 0003--1--2----2 0003--1--6----6 同じシリアル番号で回数が1回の時はその個数 複数の回数の時はその合計個数をBI列に求めたいと思います このときの式の立て方をお教えください。 よろしくお願いいたします。

  • Excelのマクロを使ってのオートフィル

    Excelのマクロを使ってのオートフィルについて教えて下さい。 類似の質問があったのですが、決まったセルからのものが多くわかりませんでした。 マクロはまだ始めたばかりです。 やりたいことはExcelの2つのシートに別のcsvファイルの数字を入れることです。 ExcelのSheet1のD1セルに日付を表す数字が入っています。 Sheet2と3には2行目に月の日付がずらりと並んでいます。 1列目には記録番号が入っています。 それぞれのシートにSheet1のD1セルと同じ日付の列を見つけて、 その下の行から1列目の記録番号を元に検索したcsvファイルのデータを引っ張ってきたいのです。   Sheets("Sheet1").Select Cells(3, (Sheets("Sheet2").Range("D1")).Select と最初に入れるセルを探しても違う列に飛んでしまったりします。 又、下のセルまで数式もコピーできずに止まったままです。 VBAまでは手が出せずに悩んでいます。どうか教えて下さい。よろしくお願いします。

  • エクセルのマクロについて教えてください

    こんな感じのマクロを考えています。 今いるセルの行番号の百の位を行番号とし、 A列のその行番号にある文字列を取得したい場合どのように書けばよいのでしょうか? 例) A2には「あさだ」と書かれています。 A3には「まお」と書かれています。 あるセルの行番号が342の時、百の位である3から、A列の3行目、つまりA3にある「まお」という 文字列を取得して表示させる。 TEXT(QUOTIENT (ROW(),100)&"","@")で上記でいうところの文字列3が取れますが、 ここからどうやってA3として、そのセル番号の中身を取得できるのでしょうか?

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • 【エクセル】 行番号を変数とする方法について

    下表のようなデータがあったとします。 A B C D 1 2 TEST 3 4 5 合計 100 6 <目的>ある文字列が含まれる行番号以下の範囲を指定して、VLOOKUP関数を使用。       ある文字列が含まれるセル行番号は、毎回異なる。 <具体例> 1) MATCH関数で、「TEST」という文字が含まれる行番号を取得     この場合「2」 2) VLOOKUP関数で VLOOKUP("合計",A2:D5,2false) というように   MATCH関数で得た行番号を他の関数に組み込みたいです。     どなたか、良い方法を教えて頂けないでしょうか? よろしくお願い致します。

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • 別シートの行を選択し対象列を転記するマクロ

    シート2のA~F列までデータがあります。 行数は10,000行です。(月ごとに100行くらい追加されます。) A列は項目がNO.で半角数字が連番で入力されてます。 セルA2→1 セルA3→2 セルA4→3 . . . セルA10000→9999 セルA10001→10000 という感じです。 シート1の セルI9に番号を入力すると シート2のその番号の行のB~F列の値を シート1のJ9~N9列に転記したいです。 例えば シート1のセルI9に100と入力したら、 シート2のA列が100と入力されているセルはA101ですから 101行目となります。101行目の各列の値を転記します。 ↓ シート1のセルJ9にシート2のセルB101の値を転記 シート1のセルK9にシート2のセルC101の値を転記 シート1のセルL9にシート2のセルD101の値を転記 シート1のセルM9にシート2のセルE101の値を転記 シート1のセルN9にシート2のセルF101の値を転記 シート1もシート2もセルの書式設定は標準。 B,E,F列は半角英数字の組み合わせで C,D列は半角数字のみです。 たまにF列に空白がある行があります。 B,F列は数字のみの場合もあります。 B,C,D,F列は数字のみの場合 「数値が文字列として入力されています」 となっています。 マクロで行いたいのですが記述そのものを教えてください。

  • エクセル VBA で列番号を足す方法は?

    こんにちは。大変お世話になっています。 Set btd = Range("d2:z2").Find(bmd) といったVBAを使用し、あるセル番地を抜き出しました。 そのセルの列番号のみを抜き出して、そこから列番号を右へいくつか動かしたいのですが、その方法がわかりません。 別の定義で出した行をgとして Cells(g, btd.Column)でセルの指定をしました。 このセルがa1だとします。 次の作業として、b1のセルを指定したいのですが、その方法がわからないのです。 b=Cells(g, btd.Column) と定義して、 b.Offset(0, 1).Value などと書いてもエラーになってしまいます。 行番号なら数字を足したり引いたりすればできたのですが、アルファベットの列番号の場合はどうしたら良いのでしょうか? すみませんがよろしくお願いします。

  • エクセルで数字を認識して行をコピーして挿入するマクロ

    以前ご質問がありましたが少し違います。 エクセルのマクロでこんなことは可能でしょうか? (1)ある「不特定のセル」に(数字)が入ったとき    (そのセルの列は固定) (2)自動的にそのセルの「行」全体をコピーして    その数字が5なら5行、1なら1行 (3)ひとつ下の行に「コピーしたセルの挿入」で行の追   加をする 例 列 A.B.C.D.E a.b.c.d.2 "a.b.c.d.2" "a.b.c.d.2" a.b.c.d.3 Eの列に2とある場合下に2行追加コピー "a.b.c.d.2"の部分。 不特定が難しい場合は E列とか列を決めていただいてもよろしいです。 あとでVBをこちらで変更いたします。 無理を言いますが可能であれば お詳しい方、ご教授宜しくお願い致します。

  • こんなことできますか?

    EXCEL2010です       A    ・・・・・・・・・・・・・・・・    AA       AB         1   管理番号 ・・・・・・・・・・・・・・・・   金額1     金額2         2     1    ・・・・・・・・・・・・・・・・  1,000    1,000         3     2    ・・・・・・・・・・・・・・・・  1,500    4,000 4     2    ・・・・・・・・・・・・・・・・  1,000                    5     2    ・・・・・・・・・・・・・・・・  1,500                  6     3    ・・・・・・・・・・・・・・・・  1,500    1,500 7     4    ・・・・・・・・・・・・・・・・    800    2,100        8     4    ・・・・・・・・・・・・・・・・  1,300                 9     5                            管理番号は昇順に並んでいます。 管理番号:同じものが複数あることがあります。 AA列には各々の数字が入っています。 AB列に、管理番号が同じものの合計値を自動入力させるようにしたいです。 (合計値が入るセルはAB列で同じ管理番号の一番上の行です。) こんなことができる計算式ってありますか? SUMIF関数だけでするとAB列すべてに数字が入ってしまいます。 総合計を最後の行に出したいので、ダブルと困ります。 おわかりになる方がおられましたら、教えてください。 宜しくお願い致します。

専門家に質問してみよう