• ベストアンサー

エクセル 抽出した値を別々に表示させたい

たとえば、Aという項目のとなりの列に「ああ」、「いい」とランダムに文字列があります。重複ありです。 別シートにて集計したいのですが、該当するすべての値を横1列に表示させたいのです。重複する値を別々に表示させることはできますか?

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

  • ベストアンサー
  • macchan1
  • ベストアンサー率38% (52/136)
回答No.9

これまでの例示されたデータなら問題なく抽出できるのですが、レイアウトが変われば当然ご希望の結果が得られません。 このようなご質問では「例えば」ではなく、できる限り実際のデータ形式を例示した方が的確な回答が得られると思います。 特にマクロで対応する場合は、当然ですがセル位置などが違うとうまく作動しませんのでご注意ください。 提示した数式の説明をすると(配列数式の意味はわかるという前提で)、 =INDEX(Sheet3!$C$1:$C$100,SMALL((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1)*ROW($A$1:$A$100),SUMPRODUCT((((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1))=0)*1)+COLUMN(A1)),1) (Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1)*ROW($A$1:$A$100)の部分は Sheet3のA1~A100セルの値がA1セルと等しい配列*Sheet3のB1~B100セルの値がA1セルと等しい配列は両方が成立する配列を返します。それにROW($A$1:$A$100)を掛けるとその条件の行番号の配列が求められます(すなわち、両方の条件が成り立つ行の数字の配列が求められ成立しないところは0が返る)。 SUMPRODUCT((((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1))=0)*1)の部分は2つの検索条件に一致しないデータの個数を求めています。 SMALL(上記の配列,上記の一致しないデータの個数+COLUMN(A1)) の式は、上記の配列を小さい順に並べて、0以外の数値を除いた一番小さい数(COLUMN(A1)は1を返す、その右の列は2)になるので、2つとも一致するデータで一番初めに出てくるデータが何行目にあるかが求められます。 最後に=INDEX(Sheet3!$C$1:$C$100,SMALL関数の返す行数,1)でSheet3!$C$1:$C$100の中から該当するデータを抽出しています。 こちらではデータシートの詳細なレイアウトが分かりませんので、実際のレイアウトに沿った数式に変更してみて下さい。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (8)

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.8

#5と#6の私の回答ではうまくいかないのでしょうか? もしうまくいかないのでしたらどのように表示されるかお知らせください。

nmnmn
質問者

補足

うまくいかないというか、こちらの情報不足のためか、意味不明でした。 具体例で言います(最初からそうすればよかったですね)。 以下のような表があります A       B       C 部門    勘定科目     金額 954    郵送料     900 963    消耗品費    500 911    郵送料     80 954    消耗品費    500 954    郵送料     270 954    郵送料     900 部門ごとのシートに勘定科目と金額を集計するのですが、値も別々に表示させたい。 たとえば954のシートに  A    B   C   D   E   F                  (B~Eの合計 ) 郵送料 900 270 900    2070                  消耗品 500            500 旅費                   0 としたい場合の B、C、D、Eに入れる関数を教えてください。 一旦一つのセルにリスト形式で表示させる方法でも構いません。 できれば意味を教えていただけると助かります。 実際は並び方も、セル番号も違います。

全文を見る
すると、全ての回答が全文表示されます。
回答No.7

#4 2以降はAかつ「いい」 なり、 Bかつ「ああ」なり条件を変えるだけと思っていたのですが --- ということは、別シートでは1行のみ使い、 その行のAB列を変更しながらC列に表示する ということなのですか? 転送先シート   A  B   C1 C2 C3 1 A ああ 123 908 567 --↑不明? C2は、D1? C3は、E1? こちらは?

nmnmn
質問者

補足

転送先シート   A  B   C1 C2 C3 1 A ああ 123 908 567 --↑不明? C2は、D1? C3は、E1? C1,C2,C3 は列番号でいうとC,D,E です。 Cという項目の1番目、2番目、3番目という意味で、ランダムです、とお伝えしたかったのですが。ちなみに重複の値もありです。

全文を見る
すると、全ての回答が全文表示されます。
  • macchan1
  • ベストアンサー率38% (52/136)
回答No.6

すみません、補足します。 #5の式はCtrl+Shift+Enterで確定して配列数式にする必要があります。 エラー値を表示しないようにする場合は、IF関数で以下のような式にして下さい。 =IF(SUMPRODUCT((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1))<COLUMN(A1),"",元の式)

全文を見る
すると、全ての回答が全文表示されます。
  • macchan1
  • ベストアンサー率38% (52/136)
回答No.5

関数で対応するなら以下のような感じになります。 Sheet3のデータを別シートのC1セルに表示する例です。 =INDEX(Sheet3!$C$1:$C$10,SMALL((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1)*ROW($A$1:$A$100),SUMPRODUCT((((Sheet3!$A$1:$A$100=$A1)*(Sheet3!$B$1:$B$100=$B1))=0)*1)+COLUMN(A1)),1) 上記の式は、数式が複雑になるのでエラー処理はしてありません(データが無い場合に空白表示になるようにしていない)。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

#2 転送先シート   A  B   C1 C2 C3 1 A ああ 123 908 567 --↑不明? C2は、D1? C3は、E1? 1 A ああ 123 908 567 の次は、 2 B ええ 345 なのか、 2 A せせ 238 なのか、 どちらでもいいのか (ソート順は?) にも寄ります。

nmnmn
質問者

補足

1 A ああ 123 908 567 の次は、 2 B ええ 345 なのか、 2 A せせ 238 なのか、 どちらでもいいのか (ソート順は?) にも寄ります。   ↑ 次の指定も必要ですか? 1の例でいくと、Aかつ「ああ」を満たした値を抜き出す。すべての値を抜き出す(重複もあり)。としたいのです。 2以降はAかつ「いい」 なり、 Bかつ「ああ」なり条件を変えるだけと思っていたのですが。 説明が下手で申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

最初にすみませんが、私は、関数は苦手なので、VBAにさせてください。たぶん、どなたか関数で出来るかとは思います。とりあえず、最初に回答させていただきます。 メニューから ツール-マクロ-Visual Basic Editor- 挿入-標準モジュール(M) で、以下を貼り付けてください。 後は、フォーム・ボタンあたりで、マクロの登録をすると便利かと思います。 マクロ-マクロ-「TenkiPrc 」でも、実行できます。 ただし、コピー元のデータは、A1 からあるものとしています。 Sub TenkiPrc()  Dim Sh1 As Worksheet  Dim Sh2 As Worksheet  Dim i As Long, j As Long  Dim k As Long, m As Long, n As Long  Dim myData() As Variant '配列で確保  'シートを確認してください。  Set Sh1 = Worksheets("Sheet1")  Set Sh2 = Worksheets("Sheet2")  With Sh2   '転送先のシートのデータの消去   .Range("A1").CurrentRegion.ClearContents   'コピー元のデータを転送先シートのA1から、そのままコピー   Sh1.Range("A1").CurrentRegion.Copy .Range("A1")   .Activate   Application.ScreenUpdating = False '画面の切り替え停止    '並び替え   .Range("A1").Sort Key1:=.Range("A1"), Key2:=.Range("B1"), _      Order1:=xlAscending, _      Header:=xlGuess, _      OrderCustom:=1, _      MatchCase:=False, _      Orientation:=xlTopToBottom, _      SortMethod:=xlPinYin   m = 1: k = 0 '初期値   For i = 1 To .Range("A1").CurrentRegion.Rows.Count + 1    '最後にセルのダミーを入れる +1    ReDim Preserve myData(1, i - 1)    myData(0, i - 1) = .Cells(i, 1).Value & "," & .Cells(i, 2).Value    myData(1, i - 1) = .Cells(i, 3).Value   Next i   .Range("A1").CurrentRegion.ClearContents   For i = LBound(myData(), 2) To UBound(myData(), 2) - 1    If myData(0, i) <> myData(0, i + 1) Then    '上と下が違ったら、実行     .Cells(m, 1).Value = _       Left(myData(0, i), InStr(myData(0, i), ",") - 1)       'データの切り出し:左側     .Cells(m, 2).Value = _       Mid(myData(0, i), InStr(myData(0, i), ",") + 1)       'データの切り出し:右側     For n = k To i      .Cells(m, 3).Offset(, j).Value = myData(1, n)       'C列からの出力       j = j + 1     Next n     j = 0: k = i + 1: m = m + 1    End If   Next i   Application.ScreenUpdating = True '画面の切り替え  End With   MsgBox "終了しました。", 64 End Sub

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

該当するすべての値を横1列に表示させたいのです って、 元のデータ   A  B  1 A ああ 2 B いい 3 C うう 4 A ええ 5 B おお 6 A ああ    ↓ 転送先シート   A  B   C 1 A ああ ええ 2 B いい おお 3 C うう って?ことかな 「集計したいのですが」 どう集計?したいの 「重複する値を別々に表示」 転送先シート   A  B   C  d 1 A ああ ええ ああ 2 B いい おお 3 C うう ってこと?

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

質問の情報が不足しています。 元のデータ   A  B   C 1 A ああ いい 2 B ええ うう 3 C かか いい 4 A ああ いい    ↓ 転送先シート   A  B   C 1 A ああ いい 2 A ああ いい という意味ですか? もし、その場合、何を基準にして、集計させるのですか? 列ですか、列の文字列ですか? 関数でお望みですか?それとも、VBAですか?

nmnmn
質問者

補足

すみません。 確かに情報不足でした。 元のデータ   A  B   C 1 A ああ 123 2 B ええ 345 3 C かか 234 4 A ああ 908 5 C いい 469 6 A せせ 238 7 A ああ 567    ↓ 転送先シート   A  B   C1 C2 C3 1 A ああ 123 908 567 例を出していただいたとおり3項目並んでいるとして、 AとBの両方を満たすという条件でCの値を求めたいのですが、複数ある場合、横一列に表示させたいのです。 簡単な関数があれば教えてください。 VBAでも、勿論うれしいのですが、知識不足なため、 今はゆっくりと学習している暇がありません。 お願いいたします

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELで範囲内にある値を検索してA列の値を返す

    タイトル通りなのですが、OSはXPでEXCEL2000を使用しています。 シート内ですが 1.A列には文字列が入っています。200行まで空白は無いです。 1.B列からL列の200行までに数字がランダムに入っています。 2.数字は1~500までです。 3.行によってはL列まですべてのセルに値が入ってません。  数字の入っていないセルは空白です。 4.数字の重複はありません。 やりたいことは 別のシートのA列に1~500までの数字を入れ、B列に上記範囲の中からその数字を検索して、その行のA列の値を返したいのですが、出来ません。 どの関数を組み合わせれば出来るのでしょうか? vlookupの検索範囲は1列だけなのでダメでした。 よろしくお願いします。

  • 条件に合った値を抜き出すには

    例えば、A列に縦に並んだデータのシートが数十枚あります。 その各シートのデータの先頭の値と、 指定する値(複数あります)に当てはまったデータだけを新しいシートに抜き出す方法はありますでしょうか? A列に縦に続くデータ 0 1 2 3 4 5 ・ ・ ・ 上記データのより <複数の条件を指定する〉 0123           ○→全て該当するので抜き出す 012345         ○→全て該当するので抜き出す 123456         ×→全て該当しないので抜き出さない (全て文字列モードで表示できる方法があれば嬉しいです)

  • Excel VBAで値が重複する行を削除する

    Excel2000を使っています。 シートAに数千件のデータがあります。 シートBのE列にある文字とシートAのD列の文字が重複する場合に、シートAの重複するセルがある行を削除する(且つできれば行のデータを抜き出すVBAを作ろうと考えています。 最近VBAの初心者本をやっと理解したところで、ちんぷんかんぷんとまではいかないけど、知恵熱がでました。 仕事なので自分でなんとかすべきかと思いますが、きっかけの調べ方がまずわからない。 どなたか、解かるきっかけだけでも与えて頂けないでしょうか。とくに、別シートの値と重複する値を探す場合に何をいれるかわかればきっと道は開けると思うんですが…。 初めての質問なので、質問内容が至らなかったらもうしわけありません。

  • EXCELで別シートから値の一致しないデータを抽出する方法

    Sheet1のA列に A1 123 A2 456 A3 789 のデータが入力されており、Sheet2のB列に B1 666 B2 123 B3 888 B4 999 B5 456 B6 888 のデータが入力されている場合に、 下の表のように、Sheet1のA4以降のセルにSheet2のB列から ・Sheet1のA1~A3に一致しないデータ ・Sheet2のB列で重複しないデータ ・降順 の3点の条件で抽出する方法を関数で教えてください。 よろしくお願いします。 Sheet1 A1 123 A2 456 A3 789 A4 999 <-ここからSheer2のデータでA1~A3以外の値でSheet2の重複をさけて降順で表示させたい A5 888 A6 666

  • エクセルで 二行の値をマッチさせるには?

    A列とB列があるとして、それぞれランダムな数字が入っています A列には100個の値、B列には150個の値が入っていて、 Bの列にはA列の値がすべて入っています A列の値が、B列に存在するか検索し、 A列の値がB列になかった場合、印をつけるか 削除(「-」かなにかに置換でもよい)できるような関数はありますか? 例) こういうデータを A   B 1   9 2   8 3   7 4   6 5   5 6   4 7   3    2    1 こうしたい A   B 1   1 2   2 3   3 4   4 5   5 6   6 7   7 該当なしの値(8,9)は 最終的に抹消したいのです ----------- MATCHでは、検索値が一つしか入れられず A列すべての値を、B列すべてにマッチできませんでした (やり方が悪かったのかも) IFで、Aの値がBに存在すればTRUE、存在しなければ「-」に置換 ・・・・というのをやってみたのですが、 たぶん書き方が悪くて(?)うまく動きませんでした 私は独学で基礎をきちんと理解できているか 自分で自信がないのですが、どうぞよろしくお願いします

  • エクセルマクロで条件に該当する数値を探す

    エクセル初心者です。 シート1のA1~A18に1~18の数値がランダムに入っています。(重複した値は無し) シート2の3行目C3~T3にも1~18の数値がランダムに入っています。(空欄あり、重複した数値は無し) シート2の2行目C2~T2までは左から順に1~18の数値が入っています。(順位表示) 以上の条件下で下記の作業をマクロで実行させる式を教えてください。 シート1のA1~A18の値と同じ値を、 シート2の3行目C3~T3の中からどのセル(列)に入っているかを確認して、さらに該当する列の2行目C2~T2の値を、シート3の1行目A1~R1に表示させる。 例:シート1のA1=3、A2=2、A3=1の時、 シート2のC3=3、D3=1、E3=2でした。 シート2のC2=1、D2=2、E2=3です(この行の数値は毎回同じ) 上記の時シート3にはA1=1、B1=3、C1=2となります。 *シート1のA列A1~A18とシート3の1行目A1~R1の位置関係はリンクしています。(列→行) シート1 A列 1 3 2 シート2   A列 B列 C列 D列 E列 2行見出し見出し1  2  3 3行見出し見出し3  1  2 シート3 A列 B列 C列  2  1  3 ご理解頂けたでしょうか? 初心者ですので分かりやすい回答を宜しくお願いいたします。

  • Excelでのデータ抽出

    Excelに複数シートがあり、各シートには以下の内容が記載されてます。  A列 伝票No.  B列 日付  C列 担当者  D列 型番    ・    ・    ・ B列で任意の日付を検索し該当する値があれば、その行(A~D…列)を別シートにコピーし抽出したいのです。 VBAを使ってやりたいのですがどうしたらよいでしょうか? よろしくお願いします。

  • Excelで一つのシートに複数のリストを作成し、別のところにその集計表

    Excelで一つのシートに複数のリストを作成し、別のところにその集計表を作成したいです。リスト(1)はA列に文字列(例えば社名とか)B列に数字、リスト(2)はD列に文字列E列に数字です。集計表は、G列に各リストの文字列を重複分を除いて抽出して表示させ、H列には数字(重複文字列の数字は合計します)が表示されるようにしたいです。どのようにしたらいいでしょうか?参考URLでもいいのでお願いします。

  • エクセルでのマクロを教えて

    下記のようなものをみたすマクロは組めますか? ファイルにシートが何種類かあります。 sheet1には各店の集計データーがあります。 その中にA列には集計の項目名がAZ列まであり 1行目には店舗名が10種類あります。 sheet2からはsheet名をsheet1に記入されている1行目にしている店舗名にしてあります。 またA列には集計の項目名がありますが sheet1にある項目と全く同じではなく 項目は少なくなっています。 また、sheet2からの店舗名にはsheet1の集計表にはない 店舗名もあります。 このsheet1のデーターをもとに sheet2の1行目の項目と一致する項目の値や数字を sheet1からコピーするというものです。 よろしくお願いします。

  • エクセルで、規則性はあるのですが、数字と文字が混在しているものを重複しないように抽出したいのですが。

    エクセルで、シート1に列A(数値)と列B(文字列)を結合したものが、 列C(列A&列B)であります。 これをシート2で列Cの文字列が重複しないように抽出したいのです が、どうしたらよいのでしょうか? シート1     列A  列B  列C 行1  項目A 項目B 項目C 行2  2   CC  2CC 行3  3   AA  3AA 行4  5   BB  5BB 行5  7   PP  7PP 行6  2   CC  2CC 行7  5   AA  5AA これをシート2で、     列C 行1  項目A 行2  2CC 行3  3AA 行4  5BB 行5  5AA 行6  7PP このように重複するものを統合した形でまとめたいのですが、 わかるかたがいれば教えてもらえないでしょうか?

専門家に質問してみよう