KEYが変わるまで加算する方法

このQ&Aのポイント
  • KEYが変わるまで、B列~AF列までの各列毎に加算し、KEYが変わるとAG列にA列のKEYとAH列~BL列に加算合計をのせる方法が知りたいです。
  • エクセルシートにはA列とB列~AF列があります。A列のKEYが変わるまで、各列の値を加算し、変わったらAG列にA列のKEYと各列の合計を表示する方法を教えてください。
  • エクセルシートにはA列とB列~AF列があります。A列のKEYが変わるまで、各列の値を加算し、変わったらAG列にA列のKEYと各列の合計を表示する方法を教えてください。エクセルのバージョンは2010です。
回答を見る
  • ベストアンサー

KEYが変わるまで加算する方法

どなたかご存じでしたらご回答よろしくお願いします。 A列をKEYとしてB列~AF列までに0又は1が入るエクセルシートが下記のようにあります。 【質問】  A列のKEYが変わるまで、B列~AF列までの各列毎に加算し、  KEYが変わるとAG列にA列のKEYとAH列~BL列に加算合計をのせる方法が知りたいです。 【エクセルシート(一部抜粋)】 A BCD E F GH I J K L MN OP QR ST UV W XY ZAAABACADAEAF                        : 12 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 12 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 12 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 13 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 13 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 13 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 14 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 14 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 15 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0                        : 【エクセルシート(一部抜粋)】 AG AHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZBABBBCBDBEBFBGBHBIBJBKBL                           : 12  1 0 2 1 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 1 1 0 0 0 2 0 1 2 2 0 1 13  0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 2 1 14   1 0 0 1 1 0 0 0 1 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 1 0 0 2 15  1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0                           : 【注意事項】   ・使用するエクセルは2010です。   ・A列は昇順で並んでいます。 以上、よろいくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

キーごとぐるぐる巡回するみたいな非効率はしません。 sub macro1() ’1行目はふつーにタイトル行にする。してあるなら以下省略。  range("1:1").insert shift:=xlshiftdown  range("A1") = "head"  range("AG:BL").clearcontents ’キーを抽出し、集計する。  range("A:A").advancedfilter action:=xlfiltercopy, copytorange:=range("AG1"), unique:=true  range("AH2:BL" & range("AG65536").end(xlup).row).formula = "=SUMIF($A:$A,$AG2,B:B)" ’片づけ  range("1:1").delete shift:=xlshiftup end sub

moguo4649
質問者

お礼

早速のご回答ありがとうございます。 教えていただいたマクロを実行したら 一発で得たい結果が得られました。 ありがとうございます。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。A12セルはAI2セルの誤りです。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A列からAFセルまでのデータが2行目から下方にあるとしてAG列は作業列とします。 AG2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(AG$1:AG1)+1,"")) AH2セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>MAX(AG:AG),"",INDEX(A:A,MATCH(ROW(A1),AG:AG,0))) これでA列でのダブりのないデータが表示されますのでA12セルには次の式を入力してBM2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =SUMIF($A:$A,$AH2,B:B)

moguo4649
質問者

お礼

回答ありがとうございます。 マクロを使わないやり方ですね。 教えて頂いた通りに入力して 得たい結果になりました。 ありがとうございました。

関連するQ&A

  • 指定したKEYの内容を取得する方法

    どなたかご存じの方ご回答よろしくお願いします。 【質問】  A列をKEYとして、B列~AF列まで数字が入っているエクセルシート(テーブル)があります。  別のエクセルシート(取得)からA列に存在するKEYを入力すると、エクセルシート(テーブル)  のB列~AF列までの値を取得する方法。 【エクセルシート(テーブル)】 A BCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAF : 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3 14 2 0 1 1 3 0 2 1 2 1 2 0 0 1 2 2 1 3 2 1 1 0 3 2 0 3 2 2 1 2 0                  : 137 1 1 1 2 4 1 2 2 2 3 1 2 0 2 2 0 3 2 4 4 0 2 4 2 0 3 2 2 2 3 1 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2 139 0 2 3 3 2 2 1 1 1 0 1 2 2 0 1 0 2 2 1 3 2 2 1 2 1 5 2 2 4 0 1 : 【エクセルシート(取得)】   A   B CD E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG  KEY1  13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3  KEY2 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2                   :    :                :  KEY15 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 【注意事項】   ・エクセルシート(テーブル)のA列のKEYは重複無しで昇順に並んでいます。   ・エクセルシート(取得)に入力するKEYは15個あります。B列にKEYを入力すると    エクセルシート(テーブル)のA列を探してHITしたKEYのB列~AF列の内容を    エクセルシート(取得)のC列以降に取得します。   ・使用するエクセルは2010です。    以上、よろしくお願いします。 

  • 指定したKEYの内容を取得する方法2

    どなたかご存じの方ご回答よろしくお願いします。 【質問】  A列をKEYとして、B列~AF列まで数字が入っているエクセルシート(テーブル)があります。  別のエクセルシート(取得)からA列に存在するKEYをKEY1~KEY15として計算結果から  でた値(変数)から、エクセルシート(テーブル)のB列~AF列までの値を取得する方法が   知りたいです。 ※KEYを直接入力して値を取得する方法は前回の質問(指定したKEYの内容を取得する    方法)で回答を得ました。 【エクセルシート(テーブル)】 A BCDEFGHIJKLMNOPQRSTUVWXYZAAABACADAEAF                  : 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3 14 2 0 1 1 3 0 2 1 2 1 2 0 0 1 2 2 1 3 2 1 1 0 3 2 0 3 2 2 1 2 0                  : 137 1 1 1 2 4 1 2 2 2 3 1 2 0 2 2 0 3 2 4 4 0 2 4 2 0 3 2 2 2 3 1 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2 139 0 2 3 3 2 2 1 1 1 0 1 2 2 0 1 0 2 2 1 3 2 2 1 2 1 5 2 2 4 0 1 : 【エクセルシート(取得)】   A   B CD E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG  KEY1  13 0 0 3 0 1 0 0 1 1 2 1 1 2 1 1 1 2 0 0 1 1 1 1 1 1 1 0 1 0 1 3  KEY2 138 2 1 1 1 0 0 1 2 1 1 2 1 2 2 1 2 1 2 1 1 3 1 3 2 1 3 5 1 1 1 2                   :   :                    :  KEY15 12 1 0 4 1 0 1 0 0 2 0 2 0 1 1 0 2 1 1 1 3 1 1 3 3 3 0 1 4 0 2 2 【注意事項】   ・エクセルシート(テーブル)のA列のKEYは重複無しで昇順に並んでいます。   ・エクセルシート(取得)に入力するKEYは15個あります。B列のKEY1~KEY15は     直接B列に値を入力するのではなく、エクセルシート(取得)の中で計算されて得られた値     です(例:KEY1のBの値は13になっていますが、このセルには「=AY+AZ」という計算式が     入っておりその計算結果です。)。計算結果が変わるたび、エクセルシート(テーブル)の     A列を探してHITしたKEYのB列~AF列の内容をエクセルシート(取得)のC列以降に     取得します。   ・使用するエクセルは2010です。    以上、よろしくお願いします。 

  • VLOOKUP関数で取得した数値を加算したい

    はじめまして、初めて質問をさせていただきます。 以下のような処理を行いたいのですが教えてください。    シート1     |   シート2   A   B      |   A    B  1りんご        | 1バナナ  10 2バナナ  25     | 2スイカ  3 3みかん  5      | 3みかん  15 4イチゴ  30     | 4ナシ   5 シート1の数量B列に、品目A列を検索キーとして、シート2の品目A列と一致する品目の数量を「加算」する形で入力したいのです。 関数を入力して、式を下にコピーしていきますが、この際に ・一致するものがない場合は、以前入っていた数値をそのままにする。 ・数値が未記入のセルもValueなどのエラーを出さないで空白セルのままにする。 結果として、このような表になって欲しいのです。   A   B    1りんご    ←空白セルは空白のまま 2バナナ  35 ←一致する品目があったので加算 3みかん  20 ←一致する品目があったので加算 4イチゴ  30 ←シート2に一致する品目がないので変化無し としたいのですが、どのような記述の式にすればよろしいでしょうか? よろしくお願いします。

  • Excelでキーを使って関数で列を行への変更

    Excelで下記の事を関数で行うことが出来るでしょうか?方法を知っている方がいましたらお教えください sheet1    A B   1 1 33  2 1 33  3 1 34  4 1 45  5 2 21  6 2 25  7 2 25  sheet2    A  B  C  D  E   1  1  33 33 34 45 2  2  21 25 25 Sheet1の状態のキーをA列とした場合に、 Sheet2でキーをA列に入力後 B1 C1 D1 E1 に 関数を使って列でまとまっているデーターを 行にする方法が分かる方、お教え願います。 (Sheet2の B1 C1 D1 E1に入れる関数の 組み方合わせが分からないと言うことです。 また、マクロはわからないので><) よろしくお願い致します。 実際にはsheet1のデータが1万件近くあるので、手作業は、辛いです。また、sheet1のA列キー以外のデーターが頻繁に変わるので効率よく作業したいの思いがあります。

  • 自動でピボットテーブルの範囲も加算したい

    エクセルのピボットテーブルでA列にはファイル名、B列には作成日が入っているのですが 今はピボットテーブルの範囲は Sheet1!$A$1:$B$522 になっています。 でも、シート1の行(レコード)は、日々追加されるので、 自動でピボットテーブルの範囲も加算したいのですが その方法を教えていただけますか? INDEX関数とcount関数を使ってた気がするのですが、 見つけられません。 よろしくお願いします。

  • Excelでキーを使って関数で列を行に変更したい

    Excelで下記の事を関数で行うことが出来るでしょうか?方法を知っている方がいましたらお教えください sheet1    A B   1 1 33  2 1 33  3 1 34  4 1 45  5 2 21  6 2 25  7 2 25  sheet2    A  B  C  D  E   1  1  33 33 34 45 2  2  21 25 25 Sheet1の状態のキーをA列とした場合に、 Sheet2でキーをA列に入力後 B1 C1 D1 E1 に 関数を使って列でまとまっているデーターを 行にする方法が分かる方、お教え願います。 (Sheet2の B1 C1 D1 E1に入れる関数の 組み方が分からないと言うことです。 また、マクロはわからないので><) よろしくお願い致します。

  • 入力値で検索KEYを検索して検索結果を2つ返す方法

    ●質問  下記のようなエクセルシートに、【入力値】、【取得値】、【検索KEY】、【変換値1】、【変換値2】   があります。【入力値】に1~9迄の数字を入力すると、その値で【検索KEY】を検索して 【変換値1】、【変換値2】の値を【取得値1】、【取得値2】に返すようにしたい。 ※A列:入力値、B列:取得値1、C列:取得値2、D列:検索KEY、E列:変換値1、F列:変換値2 ●エクセルシート    入力値  取得値1 取得値2  検索KEY  変換値1 変換値2      1      6     99       0      5      11   5      0      7       1      6      99   0      5     11       2      7       3   2      7      3        3      8      12   3      8     12       4      9       5   9      4     77       5      0       7    :      :             6      1      43    :      :             7      2      21                        8      3      35                        9      4      77        ●注意事項   ・エクセルは2010です。 以上、ご回答よろしくお願いします。

  • ハッシュのハッシュを値とキーでソートする方法

    %array = ( 'A' => {   'a' => 7,   'b' => 3,   'c' => 9,   'd' => 1, }, 'B' => {   'a' => 3,   'b' => 8,   'c' => 3, },); のようなハッシュがあったとして、値の降順、1つ目のキー昇順、2つ目のキー昇順でソートし、下のような形で出力したいのですが、どのようにすればよいのでしょうか。 A  c  9 B  b  8 A  a  7 A  b  3 B  a  3 B  c  3 A  d  1

    • ベストアンサー
    • Perl
  • エクセルのマクロを知りたい

    エクセルで,たくさんのデータが入力された【シートa】があります。 新しく【シートb】を作成して,そこに空白の表(1)~(10)までを作成します。 (ちなみに表(1)は1行から始まり100行まで,表(2)は101行から始まり200行まで・・・・といった感じです) 【シートb】の表(1)には,【シートa】でA列に「1」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。同様に,表(2)には,【シートa】でA列に「2」が入力されているデータを抽出して,それをB列の昇順に並べて記入しなさい。・・・というのを表(10)まで続けます。 上記のような命令をボタン一つで操作できるようなマクロを教えて欲しいのです。 お願いします。

  • エクセル加算について

    初めまして。宜しくお願いします。 Excel2003の事についてお伺いしたいのですが、 例えば A1とA2を加算した数値をB1に表示して A3とA4を加算した数値をB2に表示するという感じのことを連続データでやりたいのですが。 ご指導のほどお願いいたします。

専門家に質問してみよう