エクセルで複数列の値を条件に合わせて別の列に表記する方法

このQ&Aのポイント
  • エクセルで複数列の値を条件に応じて別の列に合わせて表記する方法について説明します。
  • 具体的には、A列とB列の値を比較し、条件に合致する場合にC列に表記します。
  • INDEXやMATCH、ROW関数を使用することで実現できますが、詳しい関数の意味や使い方も解説します。
回答を見る
  • ベストアンサー

複数列の値を条件に応じて別の列に合わせて表記したい

エクセルで困っています。 以下、現在の表にあるように、 A列に、任意の番号 B列に、任意の番号にひもづく所属番号 があるとき、C列に上から、 B列番号を表記し、その下のセルに、 B列の所属番号が同じA列の番号をすべて順番に表記していきたいとき、 どのような関数を使えば可能でしょうか。 INDEXやMATCH、ROW等を考えてみましたがうまくできません。。。 また、もし可能でしたら、後学のために関数式の意味も 合わせて教えていただければ、大変大変助かります<(_ _)> ≪補足情報≫ ・A列の所属をVlookupでB列に表記させてあります。 ・A列の数値はA列内で重複しません。 ・A列の数値はB列の所属番号内で昇順に表記されています。 ・B列の所属番号設定数は変動します。  (以下の例では、所属番号1が3つ、2が4つ・・・ですが1が5つ等になる可能性もあります) ↓現在の表↓    A   B 1  1   1 2  10  1 3  15  1 4  2   2 5  6   2 6  8   2 7  20  2 8  3   3 9  9   3 10 18  3 ↓このようにしたいです。↓    A   B  C 1  1   1  1 2  10  1  1 3  15  1  10 4  2   2  15 5  6   2  2 6  8   2  2 7  20  2  6 8  3   3  8 9  9   3  20 10 18  3  3     ・  ・  3     ・  ・  9     ・  ・  18           ・           ・           ・ ちなみに、C列の表記はA、B列と行数が合っていなくて構いません。 マクロやVBAがわからないので、関数で教えていただければありがたいです。 何卒よろしくお願いします<(_ _)> ※エクセル2010を使用しています。

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

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

C列にお望みの数値を並べるとして、D列には作業列を作って対応します。 AおよびB列が1行目からデータが有るとして、D1セルにはB列で最小の1を入力します。D2セルには次の式を入力してB列の最終行よりもさらに下方までドラッグコピーします。 =IF(COUNTIF(B:B,D1)>=COUNTIF(D$1:D1,D1),D1,IF(COUNTIF(B:B,D1+1)=0,"",D1+1)) その後にお求めのC列にはC1セルに1と入力したのちにC2セルには次の式を入力して下方にドラッグコピーします。 =IF(D2="","",IF(COUNTIF(D$1:D1,D1)=1,D1,INDEX(A:A,MATCH(D1,B:B,0)+COUNTIF(D$1:D1,D1)-1))) なお、D列が目障りでしたらD列を選択してから右クリックし「非表示」を選択します。

mmj8c6umd
質問者

お礼

返事が遅くなりましてすみません! 早速回答いただきありがとうございました。 教えていただいた通りにやってみたら無事できました!! 大変助かりました。ありがとうございました!!

関連するQ&A

  • 条件に適合した数値をピックアップしたい

    エクセル初心者+このサイトも初心者です。よろしくお願いします。 以下のような表があるとき    A    B    C 1  4/3    20    2  4/10   40 3  4/25   60 C1のセルにA列の最も日付が新しい時のB列の数値を表示したいです。 どのような関数を使えば良いのでしょうか。 よろしくお願いします。

  • countifの複数条件

    添付ファイルのような excelの表があります。 B列(日付)とC列の複数でそれぞれ条件を定めて、件数をカウントする関数を組みたいのですが上手く行きません。 作業列はもうけず、カウントできる関数をご教授下さい。 【複数条件は下記です】 (1)B列条件 2010/2/6以上、2010/2/16以下 (2)C列条件 B よろしくお願いします。

  • 【エクセル】複数条件に該当する値をかえす方法

    エクセルで表を作成していますが、どうしても上手くできません。 どなたかお分かりになりますでしょうか。 エクセル   列A   列B    列C      ---------------------------------- 1 個人   新規   2000 (円) 2 法人   新規   3000 (円) 3 法人   新規   2500 (円) 4 個人   既存   1000 (円) 5 その他  新規    500 (円) 列A、列Bはそれぞれ固定値が入ります。 列Cはすべての値(定まっていない値)が入ります。 列A、列Bをそれぞれ条件として、該当する場合列Cの 値を別シートにかえしたいのです。 例)列Aが「個人」、列Bが「新規」の場合、 列Cの値をかえす 関数を使って =IF(AND(A1=個人,B1=新規),"C1","")  とやってもエラーになってしまいます。 別シートには表を作成してあり、あるセルに列Cの 値のみ反映させたいのですが、うまくいきません。 同シート内でやっても上手くいかないので、数式そのものに 問題があると思っています。 上手く説明が出来ているか自信がありませんが、 解決できる方法はありますでしょうか。 どうぞ宜しくお願い致します。

  • 【Excel】条件を満たした最下行の値を表示

    こんにちは。 Excel2013を使用しています。 《Sheet1》    A     B     C    ・・・・・・    N 1  1234   ○    01/01          2,000 2  1234   ○    01/30          5,000 3  2345   △    01/05          1,000 4  3456   □    01/20          3,000 5  3456   □    01/25          4,000 6  1234   ○    02/10          6,000 7  3456   □    02/15          5,000 上記のような表がSheet1にある場合、A列が1234(数値)である最下行のN列の値をSheet2のA1セルに表示させたいのですが、関数で可能でしょうか? この場合はSheet2のA1セルに表示される値は6,000、同様にA列が2345(数値)である最下行のN列の値の場合は1,000です。 よろしくお願いします。

  • 表引き

    表引き関数  再質問です 仮に A    B  C   D   E  A1    2  1   1   A2    4  2   1 A3    5  3   2  A4    6  4   4 A5    1  5   6 A6    2  6   2 BとCに2列の表があります E1には =vlookup(D1,B1:C6,2,false)の関数の式を入れました B列はランダムな数値 C列は通し番号です いつもは B列に通し番号 C列はランダム数値なのでD列の数値に対してのE列の表引きは問題ないのですが 上のように B列がランダムな数値 C列が通し番号の場合 B列に同じ数値が複数個あるとき E列に返してくるのは その数値の最初のひとつだけ  上の仮の表 では D列の数値に対して E1は 以下     E列  5  5  1と6  2  4  1と6 ですが この1と6の6が表引き出来なんです この6も表引きしたいのです どうすればいいのでしょうか 他の関数と組み合わせるんでしょうか よろしくお願いします

  • ある条件を満たした最も近い数値を求める配列数式

    ある条件を満たした最も近い数値を求める配列数式について質問します。 A列には,C列の数値と比較する元になる数値が並んでいます。 B列には,D列の数値と比較する元になる数値が並んでいます。 C列には,A列の数値と比較する対象となる数値が並んでいます。 D列には,B列の数値と比較する対象となる数値が並んでいます。 E列には,計算式が入ります。 すなわち,例えば,E20には, C$1:C20の範囲内の数値で, 右となりにあるD$1:D20の数値が0でなく,かつ,B$1:B20の数値以下である数値の中で, 最もA20の数値に近い数値を求めます。もし,この条件に合う最も近い数値が複数あった場合には,最も小さい数値を求めます。 行番号   A    B    C   D   E 1       100   10  89   0   0 2       101   8   90  10   0 3       102   11  92  11  92   4        99   7   77  0   0 5        87   11  68  12  92 6       105  14  100  7   100 7       102   9   78  8   100 8       88   15  102  0    90 9       98   14   99  10    99 10      150   13   78  9   100 11      103    8   79  0   100 12      87     9   68  8   78 13      77   10  70  10   78 14      89   12  71   5   90 15      65   14  102  3   68 16      88   13  105  0   90 17     123   15   98  8   102 18     145   17   99  10   102 19      85    8  100  0    90 20      84    9   87  5    78 一定の条件を満たした配列の合計を計算する関数として,SUMPRODUCT()という便利な関数がありますが, この関数に相当する関数がないので困っています。 MIN関数が配列数式に対応していて,かつ,MIN関数をうまく利用して,最も近い数値を求めることがでるき方法があれば,私の希望が解決できそうなのです。 以上,よろしくアドバイス願います。 なお,エクセルのバージョンは,2010です。 本日,同じ表題の質問をしましたが,その際の質問の本文に掲載した数列が崩れていましたので,再度投稿します。 質問番号:6449070

  • 複数条件での値参照をする関数

    Excel2007を使っています。 以下のような表があります。 店番  月度  個数 111     4    1 111     5    0 113     4    0 112     4    1 113     5    2 別のシートに以下の表があります。 店番  4月個数  5月個数 111 112 113 この4月個数の列と、5月個数の列に関数で値を参照させたいと思います。 店番をA1セルとすると、B2セルには店番が111の4月の個数を表示させたいです。 B2に =IF(ISERROR(VLOOKUP(A2,元!A:B,2,0)),"",IF(VLOOKUP(A2,元!A:C,2,0)<>4,"",VLOOKUP(A2,元!A:C,3,0))) C2に =IF(ISERROR(VLOOKUP(A1,元!A:B,2,0)),"",IF(VLOOKUP(A1,元!A:C,2,0)<>5,"",VLOOKUP(A1,元!A:C,3,0))) このような式を入れると、4月か5月どちらか上に書いた方しかデータが表示されませんでした。 更新ボタンやトリガーを使わずにできるといいので、ピボットやVBAではなく関数でやりたいと思っているのですが、どのようにすれば良いか分かりません。 使える関数があれば、ぜひ教えて下さい。

  • 関数 複数条件での検索を【&】を使わない別の方法

    エクセル関数を使って複数の条件を満たしたときの 特定のセルの数値を返す方法が分かりません。 同じような質問が過去にはありました。ご回答の式は =INDEX(C2:C8,MATCH(D2&E2,INDEX(A2:A8&B2:B8,),0))でした。 大半はこれでいけるのですが、1ッ問題が、、式中「&」で数値をつなげてしまうと 下図で「11」-「1」と「1」-「11」が共に「111」となり、おかしなことに なってしまいます。(11-6・1-16も同じことになります) 例を挙げると    A..............B..............C...................D...............E ..........F   1.......11..............1.............100................1...............11...........200 2.......10............ 4..............120...............11...............1...........100 3.........1..............11........... 200..............10...............4............120 4.........3...............5..............500................1...............16..........700 5.........1.............16..............700 6........13..............1..............650 7........11..............6..............800 上のような表のときに D-1に「1」  E-1に「11」という2つの条件を 満たしたときのF列に200を返すということをやりたいのです。 上記にも書きましたが =INDEX(C2:C8,MATCH(D2&E2,INDEX(A2:A8&B2:B8,),0))の式に いろいろ手を加えてみましたが、とても答えが見つかりませんでしたので なにかいい方法がありましたらご伝授ください。 よろしくお願いします。

  • エクセル 複数条件を満たすデータを返す関数

    エクセルで、複数条件を満たした時にデータを返す関数をお教えください。 例えばA列に県名、B列に都市名、C列にアルファベットが入っている表があります。 イメージ・・・(カッコ内はセルの番地) (A1)神奈川県   (B1)横浜市    (C1)X (A2)神奈川県   (B2)横須賀市   (C2)Y (A3)千葉県    (B3)千葉市    (C3)Z この表があり、 (A5)神奈川県   (B5)横須賀市   (C5)??? このようにA5,B5のデータ(条件)に一致するアルファベットを C5に返す関数が必要です。(ここではYを返す) C列が数値の場合は、sumproduct等で可能と思いますが、 C列が文字の場合は使えないのではと考えています。 何か方法はありませんでしょうか?

  • シートの行並びの値を別のシートの列にコピーする式は

    あるシートに並んでいる行数値を別シートの列に並べる関数を教えていただけませんか (例)シート1      A   B   C   D 12   48 38  15  39 上記A12 に48 B12に38 C12に15と並んでいる数値を別のシートに列に並びかえる式は? シート2   A 1 48 2 38 3 15 4 39 と行った様にする関数を教えてください。単に数値だけなら                  行と列の並び替えでできますがそうではなくシート1に数値を入力                  することにより関数によって自動的にシート2に数値を表したい。                  

専門家に質問してみよう