Excelでコードを1つずつに分割する方法

このQ&Aのポイント
  • Excelを使用して、コードを1つずつに分割する方法を教えてください。テーブルデータにはグループとコードFrom、コードToが含まれており、それぞれのグループに対してコードを分割したいです。
  • Excelで、テーブルデータの中のコードを1つずつに分割する方法を教えてください。グループごとにコードFromからコードToまでの範囲をリスト化したいです。
  • Excel上で、テーブルデータの中のコードを1つずつに展開する方法を教えてください。グループごとにコードFromからコードToまでの範囲を個別のコードとして表示したいです。
回答を見る
  • ベストアンサー

コードFrom To値を1コードづつにしたい

こんにちは。下記のように登録されているコードを1レコードづつに並べたいのですが、知恵が出ません。 できればExcelだけを利用して解決したいと思っております。 どなたか良い解決方法を教えてください。 テーブルデータ   A列     B列   C列 グループ コードFrom コードTo ----------------------------- A1   1  5 A1 200 250 B1 10 25 B1 100 150 求めている結果   A列   B列    グループ コード ------------------- A1   1 A1   2 A1   3 A1   4 A1   5 A1   200 A1   201 ・  ・  ・ よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

関数を使って、Sheet2のA、B列に出力してみました。(当方、Excel2010です) Sheet1を添付図のようにしてください。 質問の表の左に1列挿入しています。挿入が難しければ、任意の箇所に同じように作ってください。添付図のように挿入できたとします。 添付図では、データの終了を示す「Z999」をB6に入力しています。 セルA2に、  =SUM(A1,D1,1)-SUM(C1) として下にコピーします。2行目は表題を参照するのでSUM関数で加算しています。各行の通番の最初をセットしています。算式を簡略化するために設けました。 Sheet2のA2に、 =VLOOKUP(ROW()-1,Sheet1!$A$2:$C$6,2,1) Sheet2のB2に、 =IF(VLOOKUP(ROW()-2+(ROW()-2=0),Sheet1!$A$2:$C$6,3,1)<>VLOOKUP(ROW()-1,Sheet1!$A$2:$C$6,3,1),VLOOKUP(ROW()-1,Sheet1!$A$2:$C$6,3,1),SUM(B1,1)) として、下にコピーします。この例では、A列に「Z999」が出てきたら終了です。その行から下は削除してください。 Sheet1の参照範囲は実態に合うように変更してください。

kinka2000
質問者

お礼

早い回答ありがとうございます。 少し手を加えましたが欲しい結果が得られました。 ありがとうございました。

その他の回答 (1)

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

こんばんは! VBAでの一例です。 ↓の画像のように左側がSheet1で右側のSheet2に表示するとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, lastRow As Long, cnt As Long, wS As Worksheet Set wS = Worksheets("Sheet1") With Worksheets("Sheet2") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(.Cells(2, "A"), .Cells(lastRow, "B")).ClearContents End If For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row cnt = wS.Cells(i, "B") - 1 Do Until cnt = wS.Cells(i, "C") cnt = cnt + 1 With .Cells(Rows.Count, "A").End(xlUp).Offset(1) .Value = wS.Cells(i, "A") .Offset(, 1) = cnt End With Loop Next i End With End Sub 'この行まで ※ 関数でないのでSheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m

kinka2000
質問者

お礼

回答ありがとうございます。 参考にさせていただきます。

関連するQ&A

  • 【SQL 2つのコードが重複する場合、除外して集計する】

    色々試行錯誤していますが、データの出力が正しくできません。 本日、別の質問を記載したのですが、上手く質問がまとまっていなかったために再度投稿したします。 統括会社(テーブルA)ごとにお店の評価を出力したいと思っています。 ただ、上手くできなくて困っています。 ======================== 行いたいこと ======================== テーブルは3つあります。 テーブルAは統括会社のテーブル、Bは店情報、Cはお店の評価結果です。 行いたいのは、統括会社のグループコードごとに、統括会社傘下のお店の評価結果の合計を表示することです。 その際、期間(登録日)を指定して合計値を表示するといったことを行いたいです。 ただ、評価結果の合計を算出する際に、お店(店名コード)ごとに過去の評価結果に”○”がついた項目CDは、重複しない形で計算をしたいです。 例) 項目CD”1-1-1”で店名コード"AAA"の評価結果が"○"が2つ、店名コード"BBB"の評価結果が"○"が零(0)、店名コード"CCC"が"○"4つの場合 評価結果2として算出 ================= テーブル ================= ■テーブルA →統括会社のテーブルです グループコード グループ名 ------------------------------------- AAAA      ああああ BBBB      いいいい CCCC      うううう ■テーブルC →店情報のテーブルです 店名コード グループコード ------------------------------------- ららら AAAA せせせ BBBB ししし CCCC ■テーブルB →店の評価結果をもつテーブルです 項目CD  評価結果 店名コード   登録日 ------------------------------------- 1-1-1   ○     ららら   2000-10-10 1-1-1   ○     ららら   2007-12-10 1-1-1   ×     せせせ   2006-12-16 1-1-1   ○     ししし   2009-04-16 1-2-1   ○     ららら   2004-10-16 1-2-1   ○     せせせ   2007-01-16 1-2-1   ○     ししし   2003-12-14 1-2-1   〇     ししし   2007-12-15 ============== SQL ============== SQLは以下の通りです。 select テーブルA.グループコード,count(rtable.評価結果)、 from (select 店名コード,項目CD,評価結果,登録日 from テーブルC group by 店名コード,項目CD,評価結果,登録日 order by 店名コード,項目CD,評価結果,登録日) as rtable,テーブルA,テーブルB where テーブルA.グループコード = テーブルB.グループコード and テーブルB.店名コード = rtable.店名コード rtable.評価結果 = '○' and rtable.登録日 between '2000-01-01' and '2009-01-01' and テーブルA.グループコード ='AAAA' =============== 結果 =============== ■理想の結果(店名コードと評価結果が同じ場合は合計しない) グループコード 評価結果(合計) ---------------------------- AAAA       5 ■現在の結果(店名コードと評価結果が同じ場合も合計してしまう) グループ 評価結果(合計) ---------------------------- AAAA        7 何卒よろしくお願いいたします。

  • 検索値がFrom Toの間の場合に特定の値を返す

    「検索値」がFrom Toの間の値である場合に、「結果」の値を返したいのですが、 Excelの関数、もしくは、AccessのSQL等で実現できますでしょうか。 2つの表があります。 <表1> [行番][検索値] 1;    1395 2;    2059 3;    0059 4;    5928 5;    3000 <表2> [From] [To] [結果] 0000;  1000;  A 1050;  2000;  B 3000;  5000;  C ※FromからToの間隔はランダムです。  また、前行のToと次行のFromも連続していない場合があります。 表1の行番1には、「B」 表1の行番2には、N/A  を返す。 色々調べてみたのですが、解決策が見つかりませんでした。 ご教示頂けると幸甚です。 何卒よろしくお願い致します。

  • Access select句でのサブクエリ

    Access2010でのサブクエリについてお教えください。 注文テーブル 商品コード,数量,フラグ A,3,x B,2,x C,1,x A,3,y B,4,y C,3,y このようなテーブルがあります。 SELECT 商品コード,数量 FROM 注文テーブル GROUP BY 商品コード A,6 B,6 C,4 やりたい事はフラグがxの数量も表示たいと思っています。結果としては、下記の結果が欲しいです。 A,6,3 B,6,2 C,4,1 select句でサブクエリを作りました。 SELECT 商品コード,数量,(SELCT 数量 FROM 注文テーブル WHERE フラグ='x' GROUP BY 商品コード) FROM 注文テーブル GROUP BY 商品コード しかしこのコードを実行すると、「このサブクエリでは1つのレコードしか返せません」と表示されます。 どこを修正したら正しいデータを取得することができるでしょうか?

  • viewでfrom句にサブクエリが書けない

    こんにちは。MYSQLのVIEWの代替についてお教え下さい。 下記でinner joinについて教えて頂きました。 http://okwave.jp/qa/q7296711.html 環境はWin 7 MYQL5です。 t1テーブルのデータ ID,在庫 001,22 t2テーブルのデータ ID,出庫 001,17 001,3 SELECT A.z AS `在庫`,B.* FROM (SELECT SUM(stock) AS z FROM t1 WHERE id='001' GROUP BY id) A INNER JOIN t2 B ON A.id=B.id というコードで、それぞれのテーブルをグループ化してグループ化したもの同士をJOINしました。 このコードを元にVIEWを作り、そのVIEWを対象にクエリを作ろうと考えていました。 しかしながら、MYSQLのVIEWではFROM句でサブクエリは使えませんでした。 http://www.klab.jp/media/mysql/index4.html 上記のコードを書きなおして、なんとしてもVIEWで利用したいのですが、FROM句でサブクエリを使わずにVIEWを作成する方法がわかりません。 どのようにリライトすればよいか、ご助言お願い致します。

    • ベストアンサー
    • MySQL
  • ★エクセルマクロコード教えていただけますでしょうか

    マクロのコードを組みたいと考えておりますが、 ほとんど初心者のため、お詳しい方の力を貸していただきたい次第でございます。 m(__)m ○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。  その後、そのシートを各フォルダに保存したい。 あるデスクトップ上にあるエクセルシート「管理DB」の「sheet1」にある管理データ A列(グループa~e)、B列(登録日)、C列(ステータス)によって構成されているシートで、 1.A列「グループ」「a」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダX本部」に保存。 1~5の一連の作業をグループがなくなるまで繰り返したいと考えています。 1.A列「グループ」「b」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダY本部」に保存。 ※一連の作業の中で、グループ名と、シートの保存先が変わる以外、この作業の繰り返し。 以上の作業を実行するマクロを組むことは可能でしょうか。 また、マクロのコードを教えていただけると幸いです。 マクロについてお詳しい方、何卒よろしくお願いいたします。

  • 重複レコードを高速で取得するSQL

    Access(mdb)から約2万件レコードのあるテーブルがあるとします。 列数は20ほど。 その中から、3つの列において重複しているレコードを取得したいのですが、 高速に取得する方法はありますでしょうか? (VB.NETで、重複レコードをユーザーに示す処理を作成したいのです) 以下のSQLを試したところ、1分以上時間がかかってしまいました。 ----------------------------- SELECT * FROM テーブルA table1 WHERE EXISTS ( SELECT * FROM テーブルA table2 WHERE table1.列A = table2.列A   table1.列B = table2.列B   table1.列C = table2.列C GROUP BY table2.列A HAVING COUNT(table2.列A) > 1 ) ----------------------------- アドバイスをお願いします。

  • MYSQLでコード番号を自動でつける。

    初心者です。 ユニークキーでここのレコードにコード番号をつけたいのですが、AUTO_INCREMENTでは数字しか対応してもらえず、A101.A102のようなコード番号を自動でつけることができません。 最終的にはAテーブル Bテーブルというかたちで作っていき、場面場面でグループ化などしたいので、アルファベットがほしいのですが、そういう場合はどのようなやり方をするのが主流なのでしょうか?

    • ベストアンサー
    • MySQL
  • データーベースのテーブルのコードと言う列から、十個のあるコードのデータ

    データーベースのテーブルのコードと言う列から、十個のあるコードのデータで、該当するレコードを検索する場合に、普通にSELECT文で、取得する以外に、その十個のコードの中で、テーブルに登録されてないものを取得する方法はありますか?

  • 重複データの抽出方法(複数項目)

    以下のようなテーブルからc列とd列のデータが重複しているレコードを取得したいために、以下のSQLを試してみました。 a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 02 |01 |01 |01 03 |02 |01 |03 04 |02 |02 |03 05 |01 |01 |02 06 |02 |02 |03 select * from テスト where c in (select c from テスト group by c,d having count(*)>1) and d in (select d from テスト group by c,d having count(*)>1) そうしたところ、以下の結果になってしまいました。 想定では、○のレコードだけ抽出できると思ったのです。 ×のレコードを抽出したくないのですが、SQLのどこが 間違っているのでしょうか? a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 ○ 02 |01 |01 |01 ○ 03 |02 |01 |03 × 04 |02 |02 |03 ○ 06 |02 |02 |03 ○ (使用DB)SQLServer2000

  • from A to Bの訳

    from A to Bの訳は、AからBまでですが までというのはなんかおかしくないですか?までなら from A until Bですよね? AからBにというのが正確だと思うんですがなぜ までという訳になるのでしょうか? you can enjoy everything from our music to delicious seafood.という文があり 我々の音楽から、シーフード料理まですべて楽しめますという訳でした 音楽から、シーフード料理にという意味になりますよね?toだと どういう仕組になっているんでしょうか、よろしくおねがいします