エクセルでリストの加工方法を教えてください

このQ&Aのポイント
  • エクセルでリストの加工方法を教えてください。A列(ID)、B列(エラーコード)、C列(日付)にデータがあります。
  • B列のエラーコードは「;」セミコロンで区切られており、1つのエラーコードに対して複数のレコードがあります。
  • 加工後のデータは、B列のエラーコード毎にレコードを分け、結果をA列、B列、C列に表示する形式になります。元データは8000レコードあります。
回答を見る
  • ベストアンサー

エクセルでこのリストの加工をしたいのですが

A列(ID)  B列(エラーコード)  C列(日付)に A000  01;02  4/1 A019  03  4/10 A008  02;05;07  3/29 ・ ・ ・ のように入っているデータがあり、 B列には「;」セミコロンで区切られたデータが1~25個入っています。 この全リストを下記のように加工したいのですが可能でしょうか? A列  B列  C列に A000  01  4/1 A000  02  4/1 A019  03  4/10 A008  02  3/29 A008  05  3/29 A008  07  3/29 ・ ・ ・ B列のエラーコード毎(「;」毎)のレコードに加工したいのです。 (エラー数、エラー種別数ランキング等集計のため) 標準関数と多少の手作業でもマクロでもVBAでも構わないのですが、 元リストが8000レコードあるので効率よく加工する方法があれば教えてください。

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

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

こんばんは! VBAでの一例です。 元データはSheet1にあり、Sheet2に表示するとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, cnt As Long, wS As Worksheet, myArray Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row myArray = Split(.Cells(i, "B"), ";") For k = 0 To UBound(myArray) cnt = cnt + 1 wS.Cells(cnt, "A") = .Cells(i, "A") wS.Cells(cnt, "B") = myArray(k) wS.Cells(cnt, "C") = .Cells(i, "C") Next k Next i End With wS.Range("B:B").NumberFormatLocal = "00" wS.Range("C:C").NumberFormatLocal = "m/d" End Sub 'この行まで ※ Sheet2のB・C列の表示形式は好みで変更してください。m(_ _)m

tanapyondai
質問者

お礼

早速回答いただいてありがとうございます! 上手くいきました、完璧です! 実はリストのレイアウトに変更があり、D列からF列までデータが増えたのですが、 ソースを修正して対応できました。 本当に助かりました。ありがとうございます。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

VBAでプログラム書く それ以外なら、25回繰り返しになるが、オートフィルタで行を絞ってコピペ B列は置換か上書きが必要

関連するQ&A

  • excelのリスト絞り込みで困っています。

    下記のようなデータがシートにあった場合 A列         B列         C列 商品コード     商品コード1     品番 AA          AA          A1 AB          AA          A2 AC          AA          A3 ZZ          AB          B1            AC          C1 D列に商品コードの入力規則によるリストを指定。 E列に品番の入力規則によるリストを指定し 選ばれた商品コードに該当する品番を E列のリストに表示したい場合はどうしたらよいのかご教授ください。 D列のリストでAAを選んだら E列の品番のリストにはA1とA2とA3が出るというイメージです。 その際にZZを選ばれた場合は、品番のリストが無いのでエラーとする方法も あわせて教えてください。

  • エクセル データー加工の方法

    エクセル表で図(1)を図(2)のようにしたいのですが、地道にコピーアンドペースト等でデーター加工するしかないのでしょうか? 図(1)    A列   B列      C列  D列    E列 1 倉庫名   商品コード   名前  在庫    必用数 2 東京    7744      加藤  1000     2 3 京都    7744      加藤  4000     5 4 東京    7755      西村  2000     7 5 京都    7755      西村  6000     8 図(2)   A列    B列   C列   D列    E列  F列   1               東京         京都 2 帳票コード  名前   在庫  必要数   在庫 必要数  2 7744     加藤   1000   2    4000  5 3 7755     西村   2000   7    6000  8 見づらくてすみません、、、要するに、図(1)で東京と京都が縦に並んで 見づらいので図(2)の要に横に並ぶようにデーターが加工されればよいのですが。。。

  • エクセルのマクロでリストを加工する

    いつもお世話になります。 エクセルで同一の商品コードが複数存在するリストがあり、商品コード順に並べ替えています。違うデータは"導入店舗"のみです。 商品コード 商品名 導入店舗 100 A商品 a店 100 A商品 b店 100 A商品 c店 101 B商品 a店 101 B商品 d店 102 C商品 a店 102 C商品 e店 ・・・・ このリストを、 商品コード 商品名 導入店舗1 導入店舗2 導入店舗3 100 A商品 a店 b店 c店 101 B商品 a店 d店 102 C商品 a店 e店 ・・・・・・ という形に自動的に修正したいのですが、 可能でしょうか。 商品コードが同じデータの店舗名を、最初の行に切り取って横方向に貼り付けていくことが出来れば、後は店舗名が無くなったデータを並べ替えて削除すればよいだけだと思うので、そこのマクロだけお願いできますでしょうか。 以上宜しくお願い致します。

  • 別シートデータからの重複のない入力規則リスト作成

    エクセルで、入力規則のリスト作成に関してご教示ください。 別シートにて、以下のようにC列にデータがあります。 データ数は可変です。 A列 B列 C列 No 種別 データ 1 A データA 2 A データA 3 A データA 4 A データB 5 C データC 6 A データB 7 C データB     :     : 上記データを使用して、入力規則で、リスト作成をしたいのです。 =OFFSET(シートA!$A$2,0,0,COUNTA(シートA!$A:$A)-1,1) 上記式を名前定義して、リストに設定した場合には、重複したリスト表示が されてしまします。 名前定義を使ってどう設定すれば、重複をしないリストづくり可能でしょうか。

  • Excelでシート間のデータの抽出方法

    1つのブックに集計用のシートと、A店、B店、C店という各店舗別の売上シートがあります。 Sheet集計用のA1にA店のコード(A店は001、B店は002というようなコード)を入れると、Sheet集計用のB列の上期売上、C列の下期売上にSheetA店のB列の上期売上、C列の下期売上のデータが入るようにすることは可能でしょうか? Sheet集計用のA1のコード変更することによってデータを引っ張ってくるシートが変わる様にしたいということなんですが、Excelでどのようにすればいいかわかりません。 各店舗のシートのA1のセルにも、その店舗のコードが入力されています。

  • エクセル集計

    エクセルで質問です。 sheet1   列   A           B 行          (名称)       (判定) 1   あいうえお        A 2   あいうえお        C 3   かきくけこ        C  4   かきくけこ        B 5   かきくけこ        B という元データがあり、みてのとおり同じ名前のものが複数あり各々で判定が違います。 次に、別のシートには(※同じシートで列をAAとしてもよいが) sheet2   列  A       B    C    D 行                判定 1             A    B    C 2   あいうえお    1         1 3   かきくけこ         2    1 という具合に、A列には名前が複数あってもひとつとしその右側に判定の種別ごとに数を記入する。 という集計表を作成したいのですが、どなたか教えてください。 ちなみにマクロはできませんのであしからず・・・・

  • エクセル計算について

    エクセル計算について A(施設種別)B(売上)C(コード) 施設種別 売上 施設種別コード 売店 2000 1 遊園地 3000 2 映画館 4000 3 エクセル2007で上記のような表を作りました。 C列欄には以下のような数式が入っています。 =IF(A2="売店",1,IF(A2="遊園地",2,IF(A2="映画館",3,))) A列欄の施設名を検索して、C列欄にコードがあらわれるようにしたのです。 そして、数式をC列欄のずいぶん下までオートフィルしました。 ところが、うまくできているかどうか確認したくて、売店から4000までのデータを A列の7行目くらいに「切り取り」して貼り付けると、#REFエラーがでました。 そして、数式にも以下のようなエラーが出ました。 =IF(#REF!="売店",1,IF(#REF!="遊園地",2,IF(#REF!="映画館",3,))) コピーだとうまくいっているので、なぜ切り取りだとうまくいかないのでしょうか。 初心者ですいません、お願いします。

  • 複数シートからリストの選択数をカウントしたい

    エクセル2010での質問です。 初心者なのでわかりにくかったらすみません。 事前にフォーマットを作り、数人に集計してもらったデータ (リストを制作し、文字列を選択してもらう形)を1つの ブックにまとめました。各シートの名前は様々です。 この状態から、各シートので選ばれたリストの文字列を抽出し、 3D集計のように「合計」シートで総数を出したいのです。 例ーーーーーーーーーーーーーーーーーーーー     ↓以下、リストで選択された項目です     リストA リストB  リストC…… sheet1 北海道  メロン   野球…… sheet2 沖縄   オレンジ  野球…… 上記を、このように集計したいのです 合計sheet リストA 北海道 1 沖縄  1 東京  0 リストB りんご  0 メロン  1 オレンジ 1 リストC 野球   2 サッカー 0 ゴルフ  0 ーーーーーーーーーーーーーーーーーーーー 各シートにリスト内の文字列の数をカウントする式を記載し、 そこで出た数を3D集計するという手法があるのは理解しているのですが、 シートの数が多いため、何かよい手法があれば……と思い、 質問させていただきました。 よろしくお願いします。

  • 【エクセル】 リストの中にリストをつける方法

    エクセルの中に、 データ→入力規則→設定→リスト で入力をリストから選択できるようにできると思います。 このときに、大リストから小リストを選択できるようにすることはできないでしょうか? 例. 【大リスト】 A、B、C 【小リスト】 A→A1、A2、A3 B→B1、B2、B3 C→C1、C2、C3 このとき、例えば入力時に「A」を選択した後「A2」を入力できるようにしたいのですが。 リストの数があまりにも多いので分類して入力時に探しやすくしたいのと、リストを分類することで内容があまりわかっていない人が入力するときにも目的の小リストを探しやすくしたいというのが目的です。

  • エクセル教えてください

    みなさんこんにちわnoboru18といいます。集計作業をしているのですが2列のデーター処理をしています。A列にコード(1~5)が入力されています。B列にA列のコード毎のデーターが入力されています。ここで。もしもA列に停機コードが「2」の時、隣り合っているB列のデーターだけカウントしなさい。という関数はありますか?ご存知の方、申し訳ありませんが教えてください

専門家に質問してみよう