- 締切済み
エクセルを使ってデータを振り分けたいのですが。。
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などで抜き出すことが出来ません。 このような場合は、どのようにすれば良いのでしょうか? マクロはわからないので、エクセル関数での方法を教えていただけませんか? よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 ■まず、元シート(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)
見飽きたようなパターンの質問です。 ーー 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)
区切り位置+ピボットテーブルでできると思いますよ。 ◆手順 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)
取り合えずと言う感じのできですが、 データの区切り文字に着目してください。 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)
補足: ID と 区分 と 個数 でセルを分けたシートを作ってください。 ID列 区分列 個数列 1 A 1 1 B 2 2 A 1 2 C 3 3 D 4 ウィザードに従ってデータ範囲を表題(ID列等)から全て囲めばOKです。
- Bronco7
- ベストアンサー率29% (150/511)
ピボットテーブルで簡単に集計できますよ データ ⇒ ピボットテーブル で、あとはウィザードに従って 表に要素を置くだけ。 出来上がった表をまた、コピー&ペーストで加工するもよしです。 難しい関数や数式なんか使う必要はありませんね。