• ベストアンサー

マクロ:横並びデータを縦並びに変更

添付のように、横に並んでいるデータを、 縦に並べ変えるマクロを組みたいのですが、 ネットで検索して、組んでみたのですが、 基本的な知識がなくてうまくいきません。 データ量もあり、頻繁に発生する作業なので、 教えて頂けると大変助かります。 よろしくお願い申し上げます。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

Option Explicit Option Base 1 Sub データ正規化()   Dim i As Integer   Dim j As Integer   Dim k As Integer   Dim 国 As String   Dim 品番 As String   Dim カラー As String   Dim 転送元 As Worksheet   Dim 転送先 As Worksheet   Set 転送元 = Worksheets("Sheet1")   Set 転送先 = Worksheets("Sheet2")   i = 2   j = 0   While 転送元.Cells(i, 1) <> ""     国 = 転送元.Cells(i, 1)     品番 = 転送元.Cells(i, 2)     カラー = 転送元.Cells(i, 3)     k = 1     While Cells(i, k * 2 + 2) <> ""       j = j + 1       転送先.Cells(j, 1) = 国       転送先.Cells(j, 2) = 品番       転送先.Cells(j, 3) = カラー       転送先.Cells(j, 4) = 転送元.Cells(i, k * 2 + 2)       転送先.Cells(j, 5) = 転送元.Cells(i, k * 2 + 3)       k = k + 1     Wend     i = i + 1   Wend End Sub データはSheet1の2行目からA列が空白になるまで D列以降はサイズと数量の2列1組で複数組 出力はSheet12の1行目から という仕様で書いてみました 現在酔っ払っているので解説が必要なら後日

arisapple
質問者

お礼

ご丁寧にすぐに回答して頂き、大変助かりました。 ありがとうございました。

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

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 標準モジュールに貼り付けてください。 '------------------------------------------- Sub MacroTest1()   Dim rng As Range   Dim i As Long   Dim j As Long   Dim k As Long   Dim sh1 As Worksheet   Dim sh2 As Worksheet   Set sh1 = Worksheets("Sheet1")   Set sh2 = Worksheets("Sheet2")      Set rng = sh1.Range("A1").CurrentRegion   Application.ScreenUpdating = False   With rng     .Resize(1, 5).Copy sh2.Cells(1, 1)     sh2.Cells(1, 5).Value = "数量"     k = 2 'タイトル行の次の行から     For i = 2 To .Rows.Count       For j = 4 To .Columns.Count Step 2         If .Cells(i, j + 1).Value <> "" Then           .Cells(i, 1).Resize(, 3).Copy sh2.Cells(k, 1)           .Cells(i, j).Resize(, 2).Copy sh2.Cells(k, 4)           k = k + 1         End If       Next j     Next i   End With   Application.ScreenUpdating = True   Set rng = Nothing   Set sh1 = Nothing   Set sh2 = Nothing End Sub    '------------------------------------------- なお、#1さんのコードは間違いではないのですが、お酒のせいでしょうか、以下のように直したほうがよいです。 While Cells(i, k * 2 + 2) <> ""     ↓ While 転送元.Cells(i, k * 2 + 2) <> ""

arisapple
質問者

お礼

大変助かりました。 ご丁寧にありがとうございました。

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

関連するQ&A

  • Excelで縦並びのデータを横並びにする

    縦に並んでいるデータを横に並び替える操作で便利をご存知の方がいましたら、教えてください。

  • 横並びのデータを縦1列に並びかえる

    横に月、縦に時間項目の表があります。 元データを残した状態で横に並んでいるデータを縦に並べる方法を教えてください。 1月のデータの下に2月データを並べる 2月の下に3月をもってくる。 上記の繰り返し ただし、表の上段には表タイトルと項目があります。 サンプルデータを添付します。

  • エクセルでデータコピーの繰り返しを行いたい

    添付のように横に並んだデータを縦にしたいのですが、 これが何千行もある為、コピーして、形式を選択して貼り付け、行列を入れ替える という手作業がもう限界です。 マクロなど全く分からず大変恐縮ですが、急いでいるということもあり、 お知恵を貸して頂ければと思っております。 どうぞ宜しくお願いいたします。

  • 縦に並んでいるデータを横並びに変えたい

    お世話になっております。エクセルの表で縦に並んでいる数字を横にしたいのです。添付の左の表のシートを参照して右の表に変更したいと思っているのですがどなたかご教授いただけませんでしょうか。エクセルは2010です。

  • エクセルのマクロで重複データの削除

    横17列、縦、約1000行の表があります。 4行目が項目で、5行目以降は次のように並んでいます。 A列(日付)、B列~H列(各データ) I列(契約番号)J列~Q列(各データ) 縦の並び順は、ばらばらで、日付順ではありません。しかも結構重複があります。 そこで、I列の商品番号をキーにして、重複をチェックし、重複しているものは、日付が新しいものを生かし、古い方は削除しようと思います。 しかし、手作業でやるにはあまりに多すぎるため、出来ればマクロでやりたいのですが、このように高度なものは、わたしが出来るマクロの記録程度では手におえそうもありません。 どのようにやったらよいのかどなたかお教え願えませんでしょうか?

  • エクセル 縦長のデータを横並びにしたい

    A列1行目から500行目まで 縦に500のデータがあり、 その後も空欄が2行入って その下に500個のデータが並ぶという 500個のデータが固まり(固定)のデータが 縦にずっと並んでいるものを 横に並べたいのですが どのようにしたら簡単に 並べかえられるか教えてください! 例 A1 FF A2 FF A3 FF A4 GG ・ ・ ・ A503 GG A504 GG A506 FF ・ ・ ・ というものをA503から500個をB1からB列に その後の500個のかたまりをC1からC列に といった具合です。 よろしくお願いいたします。

  • 横並びデータを縦並びに変更

    左枠内のように並んでいるデータがあります。 氏名をキーとして商品と個数を右枠内のように、縦並びに変換したいです。 左枠内のデータは1000を超えると想定しておりますので マクロで処理ができればと思っているのですが、 初心者のため、どういう風にマクロを組めばいいかわかりません。。。 ご教授いただければ幸いです。 どうぞよろしくお願いいたします。

  • エクセルのデータ配置を変えたい

    質問をお願いします。 エクセルで作成したデータの配置を添付のように変更したいのですがどのような方法があるのでしょうか。 具体的には、横に展開した上の表を下の表のように、A列のコード毎に、A・B・Cそれぞれの数値を表示したいことと、ブランクの部分は表示させない、というようにしたいのです。 (もちろん別のシートにデータを作成して構いません) データ量は、縦・横とも相当あるので、とても手作業ではできません。 何か良い方法があれば教えて下さい。

  • エクセル マクロの組み方について

    マクロ等について全くの初心者ですm(_ _)m 以下のマクロを組むにはどうしたらよいか教えて頂けませんでしょうか。 よろしくお願い致します。 サンプル1~10のデータを10回取ったとき、以下のようにデータが1列に100個並んでいて、No.1がサンプル1のデータ、No.2がサンプル2のデータ・・・No.11がサンプル1のデータ、No.12がサンプル2のデータ・・・となっています。これを別のシートに、横にNo.、縦にデータ値を並べ変えたいです。 No.  値 1  101 2  100 : 10 101 11 103 12 102  : 100 102 ↓以下のように別のシートに並び変えたい。    サンプル1  サンプル.2 ・・・・ サンプル10  1  101      100    ・・・・   101  2  103      102          :  :    :        :           : 10                      102

  • エクセル カラムからデータ並べ替え

    ウェブからコピーしたデータをエクセル2010にペーストし、すべてA列にデータが入っています。 縦に並んで入っているデータは、17行で一つのデータになっています。 そのため、17行区切りで横に並べていきたいのです。 そのようなマクロプログラムをお教えください。 宜しくお願い致します。

このQ&Aのポイント
  • ELD-FTV040UBKは、エレコム株式会社が製造した外付けハードディスクです。
  • 質問者は、ELD-FTV040UBKの青のライトが点滅している状況に困っています。
  • 回答者は、質問者の問題を解決するための方法や対処法を教えてください。
回答を見る

専門家に質問してみよう