• 締切済み

エクセルを使ってデータを振り分けたいのですが。。

EXCEL2003のことで質問です。 現在、下記のようにならんでいるデータがあるのですが、 これをID毎に振り分け直したいのですが、 IDが文字数がバラバラのため、どのようにすればいいのか 上手い方法が見つかりません。 [現在] ID/区分   個数 ―――――――――――――― 00000:区分AA   10 00000:区分B   20 12222:区分AA   11 12222:区分B   22 12222:区分D   44 222222:区分AA   5 222222:区分CCC   8 [最終] ID/区分 合計 区分AA 区分B 区分CCC 区分D ―――――――――――――――――――――――――――― 00000   30  10   20 12222   77  11   22       44 222222   13   5   8 最終的にはIF文とVLOOKUPの組み合わせになるのかな?と思うのですが、 左の文字列、右の区分名の文字数が全てバラバラの為、 予めLEFTなどで抜き出すことが出来ません。 このような場合は、どのようにすれば良いのでしょうか? マクロはわからないので、エクセル関数での方法を教えていただけませんか? よろしくお願いします。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

一例です。 ■まず、元シート(SHEET1)のA列(ID/区分)を2列に変更します。 (1)B列選択→挿入→列 (2)A列を選択→データ→区切り位置→次へ→その他をチェックし、:を入力→次へ→A列のデータ形式を文字列をチェック→完了 (3)B1に任意文字を入力 ■SHEET2にID列を抽出します。 (4)SHEET2のA1を選択→データ→フィルタ→フィルタオプションの設定→指定した範囲にチェック、リスト範囲欄にsheet1!$A:$A→抽出範囲欄にA1→重複するレコードは無視するをチェック→OK ■SHEET2に区分の見出し行を抽出します。 (5)SHEET2のB1を選択→データ→フィルタ→フィルタオプションの設定→指定した範囲にチェック、リスト範囲欄にsheet1!$B:$B→抽出範囲欄にB1→重複するレコードは無視するをチェック→OK (6)B2以下の範囲をコピー→C1を選択し、形式を選択して貼り付け→行列を入れ替えるをチェック→OK ■SHEET2のB列を選択→delete→B1に合計を入力 ■SHEET2のC2に以下の数式を設定し、縦横にコピー =IF(SUMPRODUCT((Sheet1!$A$1:$A$8=$A2)*(Sheet1!$B$1:$B$8=C$1)),INDEX(Sheet1!$C:$C,SUMPRODUCT((Sheet1!$A$1:$A$8=$A2)*(Sheet1!$B$1:$B$8=C$1)*ROW(Sheet1!$A$1:$A$8))),"") 数式内のセル範囲は調整して下さい。 ■SHEET2のB2に=SUM(C2:H2)を設定、下方向にコピー

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

見飽きたようなパターンの質問です。 ーー VBAでやるのがお勧め。 ーー <明細なしの合計> IDごとの計数合計なら割合簡単。 ピボットテーブルもあります。 ーー <明細を残したまま> でやるのは関数では相当難しい。 ーー ピボットTでやってみる 例データ(A、B列) A列  B列  C列 ID 計数 NUM a 2 1 a 3 2 a 1 3 b 2 1 b 4 2 c 2 1 c 3 2 c 1 3 d 2 1 C列は =COUNTIF($A$2:A2,A2) ーー ピボットのレイアウトで 行が「ID}、列が「NUM」、データに「計数」とする 結果 ID 1 2 3 総計 a 2 3 1 6 b 2 4 6 c 2 3 1 6 d 2 2 総計 8 10 2 20 となる。 データが変わったときのピボットTの更新方法など勉強のこと。 これで関数に近くなる。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

区切り位置+ピボットテーブルでできると思いますよ。 ◆手順 1. [個数] の列をC列に移動 2. [ID/区分] の列を選択し、[データ]-[区切り位置] を使って、”:”   で2列にデータ分割する。   イメージ   A列    B列    C列   ID     区分    個数   00000   区分AA   10   00000   区分BA   20   12222   区分AA   11   ・・・ 3. 2で作成された表全体を選択し、[データ]-[ピボットテーブルと・・] 4. ピボットテーブル/ピボットグラフ ウィザードを進めます   1) ウィザード1/3 [次へ] クリック   2) ウィザード2/3 [次へ] クリック   3) ウィザード3/3 [レイアウト] クリック   4) 画面右側にあるフィールドボタンを下図のようにドロップして     配置し、[OK] クリック        │列  [区分]   ───┼────────   行   │データ    [ID] │   [個数]   5) ウィザード3/3 結果の表示さきを適当に設定し、[完了] クリック で、ご希望に近いものができますから、あとは別シートで体裁を整えたり。

  • surounin
  • ベストアンサー率28% (30/106)
回答No.3

取り合えずと言う感じのできですが、 データの区切り文字に着目してください。 IDと区分の区切りは「:」ですよね? IDを取り出すには A1にデータが入力されているとすると B1に=FIND(":",A1,1) と入力すると6が帰ってきますね? そこで、C1に=LEFT(A1,B1-1) と入力するとIDを取り出せます。 次に数値の区切りは半角スペースなので、 同様にD1に=FIND(" ",A1,B1) と入力すると11が帰ってきますので E1に=MID(A1,B1+1,D1-B1) と入力すると、区分を取り出すことができます。 最後に数値ですが、 =value(trim(RIGHT(A1,LEN(A1)-D1-1))) で取り出せます。 へぼなので長くてすみません

  • Bronco7
  • ベストアンサー率29% (150/511)
回答No.2

補足: ID と 区分 と 個数 でセルを分けたシートを作ってください。 ID列 区分列 個数列 1  A    1 1  B 2 2  A 1 2  C 3 3 D 4 ウィザードに従ってデータ範囲を表題(ID列等)から全て囲めばOKです。

  • Bronco7
  • ベストアンサー率29% (150/511)
回答No.1

ピボットテーブルで簡単に集計できますよ データ ⇒ ピボットテーブル で、あとはウィザードに従って 表に要素を置くだけ。 出来上がった表をまた、コピー&ペーストで加工するもよしです。 難しい関数や数式なんか使う必要はありませんね。

関連するQ&A