• ベストアンサー

【エクセル】複数行に渡ったデータを、一行にまとめたい!

エクセルで複数行に渡ったデータを1行にしたいです。 いろんな人に聞いてみましたが、分からなくて・・・。 VBAマクロなどで一度に出来る方法が有りましたらどうか教えて下さい。よろしくお願い致します。 データはこんな感じです。 ┌─┬─┬─┐ │ID│FN│VA│ ├─┼─┼─┤ │01│HA│33│ ├─┼─┼─┤ │01│KI│45│ ├─┼─┼─┤ │01│JI│22│ ├─┼─┼─┤ │01│CA│56│ ├─┼─┼─┤ │02│HA│67│ ├─┼─┼─┤ │02│KI│99│ ├─┼─┼─┤ │02│JI│43│ ├─┼─┼─┤ この様に並び替えたいのです。 ┌─┬─┬─┬─┬─┐ │ID│HA│KI│JI│CA│ ├─┼─┼─┼─┼─┤ │01│33│45│22│56│ ├─┼─┼─┼─┼─┤ │02│67│99│43│ │ ├─┼─┼─┼─┼─┤ よろしくお願い致します

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

「データ」「ピボットテーブル...」を選択して、最初の表を選択して完了 新たなシートにピボットテーブルの設定されるのでリストボックスから IDを行に、FNを列に、VAをデータにセットしてみてください。 数式で移動する場合だと ┌─┬─┬──┬─┐ │ID│FN│KEY │VA│ ├─┼─┼──┼─┤ │01│HA│01HA│33│ ├─┼─┼──┼─┤ │01│KI│01KI│45│ ├─┼─┼──┼─┤ │01│JI│01JI│22│ ├─┼─┼──┼─┤ │01│CA│01CA│56│ ├─┼─┼──┼─┤ │02│HA│02HA│67│ ├─┼─┼──┼─┤ │02│KI│02KI│99│ ├─┼─┼──┼─┤ │02│JI│02JI│43│ ├─┼─┼──┼─┤ と3列目に C2=A1&B1 という数式でIDとFNを結合したデータを作成 B2=IF(COUNTIF(Sheet1!$C$2:$C$8,$A2&B$1),VLOOKUP($A2&B$1,Sheet1!$C$2:$D$8,2,FALSE),"") として表の範囲にコピーしてください。

tama0x0
質問者

お礼

ありがとうございましたm(_ _)m 問題解決しました!! ピポットテーブルではなく、 数式で移動の方でやってみました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#52504
noname#52504
回答No.3

4項目ずつ順に並んでいるわけですよね。 でしたら素朴にこんな方法でも。 元の表がSheet1のA1セルから入っているとして、 並べ替え先の表もA1セルから表示するとすると、 B2セル  =INDEX(Sheet1!$C$2:$C$999,(ROW()-2)*4+COLUMN()-1) として右方・下方にフィル。 必要に応じてコピー⇒値貼り付けで確定 元の表の位置が異なる場合は、VA列の位置に応じて  Sheet1!$C$2:$C$999 の部分を変更してください。 並べ替え先の位置が異なる場合は、 ROW()-2 の部分と COLUMN()-1 の部分で引く値を加減してください。 例えば「ID」と入っている部分がC4セルであれば、それぞれ ROW()-5 COLUMN()-3 となります。

tama0x0
質問者

お礼

ありがとうございましたm(_ _)m 問題解決しました!!

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAで、標準モジュールに Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") d = sh1.Range("A65536").End(xlUp).Row '-- k = 2 m = 2 b = sh1.Cells(2, "A") sh2.Cells(k, "A") = Format(sh1.Cells(2, "A"), "00") For i = 2 To 100 For j = 3 To 3 If sh1.Cells(i, j) <> "" Then If sh1.Cells(i, "A") = b Then sh2.Cells(k, m) = sh1.Cells(i, j) m = m + 1 Else k = k + 1 m = 2 b = sh1.Cells(i, "A") sh2.Cells(k, "A") = sh1.Cells(i, j) sh2.Cells(k, m) = sh1.Cells(i, j) m = m + 1 Exit For End If Else k = k + 1 m = 2 Exit For End If Next j sh2.Cells(k, "A") = Format(sh1.Cells(i, "A"), "00") b = sh1.Cells(i, "A") If i > d Then Exit Sub Next i End Sub ーー 例データ Sheet1に A1:C11 ID FN VA 1 HA 33 1 KI 45 1 JI 22 1 CA 56 2 HA 67 2 KI 99 2 JI 43 2 JA 12 3 PU 43 3 SW 55 実行結果 Sheet2に 01 33 45 22 56 02 67 99 43 12 03 43 55 前もってSheet2のA列の書式を文字列にして置いてください。 少数データでのテストしかやっていないので、ひょっとしてボロが出るかもしれないがよろしく。 こういうのは、経験してないと、なかなかロジックをコードにするのが難しい課題と思う。

tama0x0
質問者

お礼

ありがとうございましたm(_ _)m 問題解決しました!! VBAでやってみましたが、 ちょっとずれてしまって・・・ 自分で修正しなおす知識がなく、挫折してしまいました。 ごめんなさい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで複数行のデータを1行にする方法

    エクセルで複数行のデータを列挿入--切り取り--貼り付けで1行にしたいのですが、 その様なセルの並びが沢山あります。 VBAマクロなどで一度に出来る方法が有りましたらどうか教えて下さい。 データはこんな感じです。 ┌─┬─┬─┬─┬─┐ │01│04│07│10│13│ ├─┼─┼─┼─┼─┤ │02│05│08│11│14│ ├─┼─┼─┼─┼─┤ │03│06│09│12│15│ ├─┼─┼─┼─┼─┤ │16│19│22│25│28│ ├─┼─┼─┼─┼─┤ │17│20│23│26│29│ ├─┼─┼─┼─┼─┤ │18│21│24│27│30│ ├─┼─┼─┼─┼─┤ この様に並び替えたいのです。 ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │01│02│03│04│05│06│07│08│09│10│11│12│13│14│15│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ │16│17│18│19│20│21│22│23│24│25│26│27│28│29│30│ ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤ 何卒宜しくお願いいたします。

  • エクセル 複数行にまたがっているデータを一つの行3

    エクセル 複数行にまたがっているデータを一つの行にまとめ(応用) 以前にも同じような質問で1商品複数行のデータを1行にまとめるマクロ をつくって頂いたのですが、(http://okwave.jp/qa/q8191364.html) これが、たまたま、1商品1行のデータがありまして、まとめるとエラーがでてしまいます。 (エラーがでるブック http://yahoo.jp/box/aiXHto) →成分の箇所だけまとめたいのが目的。 またかなり無理な作業を承知の上でのマクロなんですが、 下記のサンプルデータで http://yahoo.jp/box/SUs3B3 前のように複数行を1行にまとめたいのですが、成分の箇所がちょっと複雑で サンプルデータの黄色のA成分、B成分、C成分があるのですが、 これを一つのセルにsheet2のようにまとめたいのですが、 VBAで上記の処理を出来る方法がありますでしょうか。  またtom04さんいつもありがとうございます。

  • Excel 複数行の抽出について

    Excel 複数行の抽出について Sheet1に商品リストがあります。 Sheet2に商談IDがあります。 Sheet3にSheet2の商談IDがある商品だけ、抽出したいです。 Excelの関数もしくはマクロで解決できますでしょうか。 ご回答お願いいたします。

  • エクセルで複数行を1データとして処理したい

     エクセルの表が、複数行づつで1つのデータになっています。  もう少し具体的に言うと、販売データの表なのですが、横軸が年月、縦軸が顧客毎に売上、回収、売掛金残の3行に分かれています。つまり、1つの顧客に3行づつデータが入力されているのです。  この表を活かして、ソートやフィルタなどの機能を使えるようにできないでしょうか?  また、VBA等を使って処理する場合に1纏まりのデータとして処理する事は可能でしょうか?  実は諦めてかけていたのですが、何か良い方法をご存知でしたら教えて下さい。

  • エクセルで同一データの行を自動削除するツールを作成したい

    VBA、マクロ初心者です。 たぶんマクロではできないと思うのですが、エクセルにて同一データを持つ行を自動検索して削除していきたいのです。どのように作ればよいのか教えてください。

  • 複数のEXCELファイルより一部の行を自動でマージするマクロ

    「(1)複数のEXCELファイル」より、「(2)特定のシート」の中のさらに「(3)特定の行」をコピーし、あるEXCELファイルの1シートに挿入していくマクロ(VBA)か、ソフトが掲載されているサイト、もしくは、やりかたを教えてください。 1.EXCELは、2003 2.「(1)複数のEXCELファイル」は、一つのフォルダにあり、データ形式は一緒。  そのフォルダにはEXCELファイルしか置きません。 3.「(2)特定のシート」について、シート名はどれも一部のみ一致します。  または位置(順番)は一緒です。 4.「(3)特定の行」はどのファイルも作りが一緒です。 VBA初心者ですが、ヒントをいただければ頑張りたいと考えています。

  • EXCEL2000 複数行のソート方法について

    EXCEL2000 複数行のソート方法について教えて下さい。 EXCELのVBA(マクロ)にて、シート上の複数行をソートしたいと考えています。 エクセル上では、3つの行に対してソートができるのは知っています。 その操作をマクロに記録して、そのVBAを変更して5つの行に対して ソートを一括で行おうとしたのですが、エラーとなってしまいました。。。 以下が記録したVBAです =================================================================== Selection.Sort Key1:=Range("C15"), order1:=xlAscending, _ key2:=Range("G15"), order2:=xlAscending, key3:=Range("h15"), order3:=xlAscending, _ header:=xlGuess, ordercustom:=1, MatchCase:=False, Orientation:= _ xlTopToBottom, sortmethod:=xlPinYin =================================================================== このVBAを変更して3つ以上の行に対して一括でソートは出来るでしょうか? この方法ではやはり無理でしょうか? VBAを2つに分けてやる方法は最後の策だと考えています。 それ以前に2つに分けて出来るのか分からないのですが。。。 知恵をかして下さい。宜しくお願い致します。

  • エクセル複数行にまたがっているデータを一つの行 4

    エクセル 複数行にまたがっているデータを一つの行にまとめ(応用) 前回の質問(http://okwave.jp/qa/q8512057.html)で、なんとか成分の箇所を一列にまとめるところまではできたのですが、 行をまとめるに当たって「ナマエ」に対して一行にまとめたいのです。 説明しにくいので、申し訳ないのですが、以下のテンプレートのブックの「理想の結果」のようなかんじです。 https://box.yahoo.co.jp/guest/viewer?sid=box-l-q4e3edf5s4nuaeuieotgo6j6b4-1001&uniqid=fc6610c4-2d34-4f49-bc3d-0975f034bcdc&viewtype=detail VBAでテンプレートブックの処理を出来る方法がありますでしょうか。 

  • エクセルでの複数行をコピーしながらデータを作成

    すいません エクセルが全然わからず、時間がないので調べないで質問しています。 常識はずれな事を質問していたらごめんなさい 基本的に以下の様なCSV形式ののデータがあります。 複数行で1つのデータをあらわしています。 このXXXXXの値をかえながら(その値を指定するファイルは別にある) データを複写していきたいのですが、エクセルのマクロなどでどのようにすればいいのでしょうか。 おしえてください。よろしくお願いします。 "A","B","C","D","E","XXXXX" "1","2","3","XXXXX" "あ","い","う","え","お","XXXXX" "6","7","","","0","XXXXX"

  • エクセルで行の高さ

    WINDOWS XP(Home Premium)でExcel2003を使用しています。 300行のデータに対し、エクセルで行の高さの自動調整をしました。 しかし、高さが一部不充分であり、印刷されると不備が多々あります。 行の高さを  「メニュー・書式(O)→行(R)→自動調整(A)」でおこなわれる高さの 1.2倍~1.5倍くらいの高さにしたいのですが良い方法はありませんか? おそらくマクロやVBAを使えば可能なんだろうなとは思いながら、 コマンドのことやプログラムを組み立てる知識が無いので、 VBAにこれを貼り付けろ、という提案を頂けたらすごく助かります。 よろしくお願いします。

    • ベストアンサー
    • Mac

専門家に質問してみよう