重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

こんばんは、よろしくお願いします。
エクセルで
   A    B  C D
1 2005/11/1  1 2 3
2 2005/11/2 4 5
3 2005/11/3 6  7
4 2005/11/4 8 9 10

と、一つの日付けに複数個の数字が入力されたデータがあるのですが、これを何らかの方法で縦一列(日付も含めて二列)のデータに変換したいのですが何とかならないでしょうか?

変換結果はこんな感じです

   A     B  C D
1 2005/11/1  1
2 2005/11/1  2
3 2005/11/1  3
4 2005/11/2 4
5 2005/11/2 5
6 2005/11/3 6
7 2005/11/3 7
8 2005/11/4 8
9 2005/11/4 9
10 2005/11/4 10

ここのNo.762328に似たような質問に対する回答はあったのですが、日付情報が入っているためか上手くいきませんでした。

どうかよろしくお願いします。

A 回答 (4件)

関数でも考えますが、VBAでするのが素直に解けます。


Sheet1からSheet2へ再構成する例です。
Sheet2のA列の書式を日付にして置いてください。
Sheet1に当たるシートをアクチブにして置いてください。
Sheet2のところは実際のシート名に変える。
あとはコメントをみて修正してください。
VBEの標準モジュールというところへ貼り付け、実行(F5キー)します。
Sub test01()
d = Range("A65536").End(xlUp).Row '最下行を求める
MsgBox d
k = 1 'Sheet2のスタート行を第1行とする
For i = 1 To d 'スタートは第1行目とする。最下行まで繰り返し
For j = 2 To 10 'データ最右列をJ列までとし、J列までを繰り返し
If Cells(i, j) = "" Then Exit For '空白のセルに出くわすとその行処理終わり
Worksheets("Sheet2").Cells(k, "A") = Cells(i, "A") 'データを移す、A列
Worksheets("Sheet2").Cells(k, "B") = Cells(i, j) 'B-J列の1セルをB列に移す
k = k + 1 '次回に備えSheet2の次の行をさす
Next j
Next i
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。おかげでうまく変換できました。

お礼日時:2005/11/08 19:25

> 数字はすべて左詰めです。



#1 imogasi さんの回答が良いと思います。マクロの実行手順を補足
します。

1. [Alt]-[F11]キー押下で Visual Basic Editor起動(以下 VBE)
2. VBE メニューから[挿入]-[標準モジュール]をクリック
3. 2.で開いたスペースにマクロをコピペ
4. VBE を閉じる
5. Excel メニュー [ツール]-[マクロ]-[マクロ]から実行
    • good
    • 0
この回答へのお礼

丁寧な補足ありがとうございます。早速メモしました。

お礼日時:2005/11/08 19:27

こんにちは。

KenKen_SP です。

WEB では スペース がつめて表示され、わかり難いのですが、表の
構成は次のとおりですか?

2005/11/1 |01|02|03
2005/11/2 |04|05|
2005/11/3 |06|  |07
2005/11/4 |08|09|10

何を確認したいかといえば、3行目の C 列のように1レコードの
なかでブランクのフィールド(列)があるかってことです。

上記表のように C3 セルはブランク?

これにより、回答がかわってきそうです。

この回答への補足

失礼しました、今度からは何度も文字のずれを確認してから書き込みをします。
構成についてですが、数字7はD3ではなくC3にあります。数字はすべて左詰めです。

補足日時:2005/11/08 11:57
    • good
    • 0

横方向のデータはそんなに多くないですか?


手作業でやるアイデアを提供します。
元の表が、例示されたとおりの表だったとして、

(1)C1:C4をB5:B8に移動。
(2)D1:D4をB9:B12に移動。
(3)A1:A4をA5:A8とA9:A12にコピー。
(4)B列でいったん並び替えして、B列が空白のデータを削除
(5)A列で並び替え
    • good
    • 0
この回答へのお礼

ありがとうございます。しかし、千行単位のデータを変換するためこの方法は使えません。すみません。

お礼日時:2005/11/08 19:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!