• ベストアンサー

Excelの重複データを次のように整理できないでしょうか

過去検索で自分なりに探して見ましたが無かったので投稿させて頂きます。 Excelだけで、以下のことできるでしょうか? 元データ  A   B 1 あ  a 2 あ  b 3 あ  c 4 い  a 5 い  c 6 う  b 7 う  c やりたいこと   A  B  C  D 1  あ  a  b  c 2  い  a     c 3  う      b  c 上記のように見やすい形に行いたいです Excelでできるだけ簡単に行えれる方法がありましたら教えてください。 また、後の人も検索ができやすいように このような表示のさせ方に名前があれば、そちらも記載して頂けば 同じような質問の人にも後で検索した時に役に立つと思いますので、表示のさせ方の名前なども教えて頂けたらと思います。

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

  • ベストアンサー
  • suekun
  • ベストアンサー率25% (369/1454)
回答No.4

質問を読み返していて、勘違いに気がつきました。^^; B列の値も種類分けしてるのですね。 じゃー追加列の文字の結合は、B1セル =A1&C1 です。   A   B   C 1 あ  あa   a 集計したい範囲の列に   A  B  C  D 16    a  b  c 17 あ 18 い と上段に分類を表記して、VLOOKUPの検索値を $A17&B$16 と 直して下さい。 基本は同じです。 個々の値が個別に検索出来る様に形を変えて 名称と分類の繋げた検索値で検索する。です。 PS:重複は処理できません。 例:あa が二つある場合。

ikkun_k
質問者

お礼

個人的にこの内容をうまく使って、解決できました。 >じゃー追加列の文字の結合は、B1セル =A1&C1 です。 この結合の計算式を使って、 その後に、A列にある重複を無くすために、 フィルタオプションにて、別シートに重複ないA列を作りまして、 その後に B・C・D列に以下のように =IF(ISERROR(VLOOKUP($A2&B$1,!$A2:$B7,2,0)),"","〇") 上記は、B2にいれた計算式です。 という具合にしてコピー&ペーストにて処理しまして、 うまく解決できました。 こちらに質問するまでは 結合するというアイデアが思いつかったです。 すごく助かりました。ありがとうございました。

その他の回答 (5)

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.6

何度もすいません。^^; 難しく考えすぎていました。 要は、やりたい事の箇所に該当するデーターがあるかないか 判定するだけなのかな? それだけでしたら、元表は先ほどの内容で 反映先に、 15  A   B   C   D 16     a   b   c 17 あ 18 い 19 う の様な表題付きの範囲にして、 =IF(COUNTIF($B$1:$B$12,$A17&B$16),B$15,"") でも良いですね。

回答No.5

ピボットテーブルではダメでしょうか? 例えば・・・ 1)A1にタイトル「あいう」、B1にタイトル「abc」を挿入します。 2)ピボットテーブルウィザードのレイアウトで   行に「あいう」、列に「abc」、値に「データの個数/abc」と設定します。 ※)総計欄は不要でしたら「表示しない」としてください。 3)ピボットテーブルの内容をコピーし、別シートに「形式を選択して貼り付け→値」します。 4)A列を選択し、「1」→「a」に置換します。 5)同様に、B列,C列も b , c に置換します。 もっと複雑な要件でしたら上記では不足かもしれませんが ご参考になれば幸いです。

ikkun_k
質問者

お礼

私自身ピボットテーブルは、使ったことが無かったので、 ピボットテーブルに苦手意識を持っていましたが、 今回の回答にてピボットテーブルも使いこなせないと行けないということを痛感しました。 ありがとうございました。

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.3

エラー処理書き忘れました。^^; =IF(ISERROR(VLOOKUP($A16&COLUMN(A1),$B$1:$C$12,2,0)),"",VLOOKUP($A16&COLUMN(A1),$B$1:$C$12,2,0))

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.2

元データーのA列とB列の間に作業用列を一列追加できるのであれば 関数で処理する事も出来ます。 新しく追加したB列のBセルに =A1&COUNTIF($A$1:A1,A1) と入力します。 これでデーター分下にフィルコピーします。 これで名称の後ろに数字が順番に付属します。 あ1 あ2 い1 い2 の様に。(同じものが並んでなくても良いです) 次はやりたい側の設定ですね。 A列に名称があるとして、(仮にA16から始まるとします) (範囲は仮にB1:C12で設定してますが、 $B:$Cでも問題なければよいです) =VLOOKUP($A16&COLUMN(A1),$B$1:$C$12,2,0) この時、VLOOKUPの範囲は、新しく追加した列を含む欲しい値のある 範囲を絶対参照で指定して下さい。 検索値は、複合参照です。A列を外さず行だけが変化するように 「$A16」と言う形です。 この検索値に、COLUMN(A1)を繋ぐ事で、右にフィルコピーした時 名称1 名称2と検索値が勝手に変化します。 対象がなかった場合のエラー処理を追加して、右に下にフィルコピー で完成です。

  • ns0811
  • ベストアンサー率18% (2/11)
回答No.1

私も最近、同じような作業をする必要ができたため、関数などいろいろしらべましたが、結局はマクロを使わないとできませんでした。 元データが約1万件もあり、毎月内容が変化するので、マクロを作りましたが、処理するのに約10分ほどかかります。(もちろんPCのスペックにもよりますが) でも、処理内容は正確にできました。 マクロの内容はとても一言では現せないので、簡単には説明できませんので、もし必要であれば別途説明させていただきます。 とりあえずは関数では無理で、マクロが必要、というのが私の回答です。 もし、他の識者の方で、こんな方法でできるという方が見えたら私も教えて欲しいと思います。

関連するQ&A