• 締切済み

重複データを1行にまとめたい

     A  B  C 佐藤 AA 佐藤    AA 佐藤       AA 鈴木 AA 鈴木       AA 鈴木    AA これを次のようにまとめたいのです。      A  B  C 佐藤 AA  AA  AA 鈴木 AA  AA  AA 何かよい方法はあるでしょうか?過去ログを参照しなさい。というログをみつけたのですがそのログを見つけ出すことができませんでした。よろしくお願いします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

下の画像のようなに、重複のないA列の名前データがG2セル以下に入力されているなら(この部分も関数で自動表示させることもできます)、G2セルに以下の式を入力し、Ctrl+Shift+Enterで確定し、右方向に3つ下方向にデータ数だけオートフィルしてください。 =INDEX(B:B,MAX(IF(($A$2:$A$100=$F2)*(B$2:B$100<>""),ROW($A$2:$A$100),"")))&""

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

シート1に元のデータがあるとして、A1セル氏名、B1セルにA,C1セルにB,D1セルにCなどと項目名があり、データは2行目からあるとします。 A列のデータは並べ替えが行われて同じ氏名は連続した行に表示されているものとします。 作業列としてE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,INT(MAX(E$1:E1))+1,INT(E1)+IF(C2<>"",0.01,0)+IF(D2<>"",0.02,0))) F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2<>"",B2,"")&IF(C2<>"",C2,"")&IF(D2<>"",D2,"") シート2にはお望みの表を作るとしてA1セルに氏名と入力して、A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!E:E,ROW(A1))=0,"",INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!E:E,0))) B1セルからD1セルにはシート1と同じ項目名を入力します。 B2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ISERROR(INDEX(Sheet1!$E:$F,MATCH(ROW(A1)+0.01*(COLUMN(A1)-1),Sheet1!$E:$E,0),2)),"",INDEX(Sheet1!$E:$F,MATCH(ROW(A1)+0.01*(COLUMN(A1)-1),Sheet1!$E:$E,0),2))

02440
質問者

お礼

思い通りの結果が出ました!! 本当にありがとうございます! ほかの方も、参考になり、ました!!!!!!

noname#204879
noname#204879
回答No.2

Sheet1   A   B   C   D 1 佐藤 SAB1 2 佐藤    SAC2 3 佐藤       SAD3 4 鈴木 SAB4 5 鈴木       SAD5 6 鈴木    SAC6 Sheet2   A   B   C   D 1 佐藤 SAB1 SAC2 SAD3 2 鈴木 SAB4 SAC6 SAD5 Sheet2 において 1.Sheet1 のA列の無重複データをA列に入力 2.セル B1 に次の[条件付き書式]を設定     数式が   → =ISERROR(B1)     フォント色 → 白 3.セル B1 に次式を入力して、此れを右方および下方にドラッグ&ペースト     =LOOKUP("黑",OFFSET(INDIRECT("Sheet1!"&ADDRESS(MATCH($A1,Sheet1!$A$1:$A$6,0),COLUMN(B1))),,,COUNTIF(Sheet1!$A$1:$A$6,$A1)))

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

こんにちは! 外しているかもしれませんが・・・ 今回の質問の場合は表内の文字列が全て統一されていますので、 上詰めで、「AA」と表示させる方法です。 そして、各行の入力は重複がないということが前提です。 ↓の画像で説明させていただくと、 作業用の列を使わせてもらっています。 作業列E2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(A1),"") としてオートフィルで下へずぃ~~~!っとコピーします。 G2セルに =IF(COUNT($E$2:$E$100)<ROW(A1),"",INDEX($A$2:$A$100,SMALL($E$2:$E$100,ROW(A1)))) H2セルに =IF($G2="","",IF(SUMPRODUCT(($A$2:$A$100=$G2)*(B$2:B$100<>"")),"AA","")) として、H2セルの数式をJ2セルまでオートフィルでコピーします。 最後にG2~J2セルを範囲指定し、J2セルのフィルハンドルで 下へコピーすると画像のような感じになります。 とりあえず、100行目まで対応できる数式にしています。 尚、この場合他の文字が入力されていても「AA」と表示されてしまいますので、 参考にならなかったら読み流してくださいね。m(__)m

02440
質問者

お礼

わかりやすい書き方でありがとうございます。 AAはあくまで仮なのでここのセルにはABやCAなどが文字列が入ります。 ちなみに数字だとエクセルの統合でできるのですが、文字列だと 統合ができなかったので関数やマクロでできると助かります。

関連するQ&A

専門家に質問してみよう