A列~F列までの文字データを以下のようにA列とB列の2列に移動させたいのですが、いくら考えてもわかりません。データが1000件以上あり、手作業ではミスをしかねないので、何かよい方法はないでしょうか?よろしくお願いします。
(手順)
(1)B~D列のデータを縦に並べる。(B~Fには文字データが入ります。すべての列にデータがあるとは限りませんが、少なくとも、B列には必ずデータがあり、B、C、Dの順にデータが入っています。)
(2)その左側にA列のデータを並べる。
(A列) (B列) (C列) (D列) (E列) (F列)
000001 10 15 20
000002 5
000003 15 10 5 3 1
↓
(A列) (B列)
000001 10
000001 15
000001 20
000002 5
000003 15
000003 10
000003 5
000003 3
000003 1
No.6ベストアンサー
- 回答日時:
5列、1行を挿入して下のようにします。
算式のみで行ってみます。(A列)(B列)(C列)(D列)(E列)(F列)(G列)(H列)(I列)
1
2 000001___10____15____20
3 000002____5
4 000003___15____10_____5_____3____1
(1)A1に 1 を入力
(2)A2に =A1+COUNT(G2:IV2) を入力。F列のデータ数分A列下方向にコピーします
(3)B2に =MATCH(ROW()-1,$A$1:$A$4,1)+1 としてB列下方向にコピー
(※上の$A$4はF列が4行目までの例です)
(4)C2に =COUNTIF($B$2:B2,B2) としてC列下方向にコピー
(5)D2に =INDEX(F:F,B2) としてD列下方向にコピー
(6)E2に =OFFSET($F$1,B2-1,C2) としてE列下方向にコピー
(7)D:E列をコピーして、どこかに形式を選択して貼り付け→値 を実行します。
nishi6さん、いつもありがとうございます。
おかげさまで100%問題を解決することができました。その他の作業を含め、昨日と今日の2日間で、所期の目的を果たすことができました。
作業をしながら、「このような難問に善意で、しかも完璧に答えて下さる方がいるとは」と涙が出そうになりました。
nishi6さんが教えて下さった関数がそれぞれどのような役割を果たすのか今は調べる余裕もありませんが、理解できるように努力したいと思います。
本当にありがとうございました。
No.8
- 回答日時:
>#7さんへ
釈迦に説法かもしれませんが、行の操作は Integer でなく Long を使用した方が良いと思います。
この例では問題ないでしょうが、行数によってはオーバーフローします。
Sub Test()
Dim myCnt1 As Integer
Dim myCnt2 As Long
Range("A32768").Value = 1
myCnt2 = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "myCnt2 : " & myCnt2
myCnt1 = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
End Sub
No.7
- 回答日時:
こんばんわ。
シート1にしかデータが入っていないという過程でサンプルマクロを作ってみました。次のように操作してみて下さい。・データの入力されているブックを開き、ALT+F11キーを押してVBE画面を表示させ、画面左上にVBAProjectと書かれているところにマウスポインターをあわせて右クリック後、挿入→標準モジュールを順にクリックして表示された右側の白い部分に下記のコードをコピーペーストする。
Sub Deta_Seiri()
Dim i As Integer
Dim j As Integer
Dim myCnt1 As Integer
Dim myCnt2 As Integer
myCnt1 = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
myCnt2 = ThisWorkbook.Worksheets(1).Cells(1, 1).End(xlToRight).Column
For i = 2 To myCnt1
For j = 2 To myCnt2
If ThisWorkbook.Worksheets(1).Cells(i, j).Value <> "" Then
ThisWorkbook.Worksheets(1).Cells(Rows.Count, 7).End(xlUp).Offset(1, 0).Value = ThisWorkbook.Worksheets(1).Cells(i, 1).Value
ThisWorkbook.Worksheets(1).Cells(Rows.Count, 8).End(xlUp).Offset(1, 0).Value = ThisWorkbook.Worksheets(1).Cells(i, j).Value
End If
Next j
Next i
ThisWorkbook.Worksheets(1).Columns("A:F").Delete
End Sub
・ALT+F11キーを再度押してエクセルの画面にもどり、メニューバーのツール→マクロ→マクロを順にクリックし、出てきたダイアログボックスの右側の実行ボタンをクリックする。
マクロが実行され、貴方様の思い通りの動作が確認できると思います。
ご不明な点・不具合がございましたら、ご遠慮なくなくお知らせ下さい。
kazuhiko5681さん、いつもありがとうございます。
試してみましたが、残念ながらエラーになってしまいました。
今回はnishi6さんの方法で解決しました。
回答ありがとうございました。
No.5
- 回答日時:
こんにちは。
コピーブック等のテスト環境で試して下さい。(使用する場合は内容のチェックも)
シートを追加して転記します。
Sub Test()
Dim Ws As Worksheet, mSheet As Worksheet
Dim LRow As Long
Set mSheet = ActiveSheet
Set Ws = Worksheets.Add(after:=ActiveSheet)
For i = 1 To mSheet.Cells(65536, 1).End(xlUp).Row
For j = 2 To mSheet.Cells(i, 1).End(xlToRight).Column
LRow = Ws.Cells(65536, 1).End(xlUp).Row + 1
Ws.Cells(LRow, 1) = mSheet.Cells(i, 1)
Ws.Cells(LRow, 2) = mSheet.Cells(i, j)
Next j
Next i
End Sub
papayukaさん、こんばんは。
返事が遅くなって申し訳ありません。
papayukaさんの作ってくださったマクロでバッチリでした。新しいシートに実行結果が出てくるなんてびっくりしてしまいました。(しかもすごい速さですね。)
ただ、空白のセルも移動してしまうのでその分の削除が必要でした。でも、すごいマクロなので大切に保存しておきたいと思います。
回答ありがとうございました。
No.4
- 回答日時:
初めまして。
貴方様のおやりになりたいことはマクロを組めば実にすばやく簡単に実行することができます。もしよろしければ、コピー&ペーストをするだけで貴方様の思い通りの動作をするサンプルマクロを組んでみたいと思います。
ご希望の節は、次のことを教えて下さい。
・データが入力されている最終の列番号
お手数をおかけいたします。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの計算式で質問です。 3 2022/06/21 21:58
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Excel(エクセル) エクセルでのマクロを使ったデータの並べ替え 3 2022/12/03 18:54
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) Excelの数字(文字列)合計について あるデータをダウンロードすると、数字データが全て文字列になっ 4 2022/09/26 21:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
【Excel】数字を3倍にし、なお...
-
エクセルのデーターが2か月前の...
-
エクセル マクロ チェックボックス
-
Excel分析ツールでのポアソン回...
-
エクセル共有したが、アクセス...
-
エクセルの計算
-
【マクロ】顧客番号にて一致さ...
-
(マクロ)データをAブックからB...
-
Excelでセルの値が同じか...
-
UNIQUE関数が使えないバージョ...
-
エクセル:一覧表に存在する文...
-
Excel フィルターを掛けた状態...
-
エクセルを使っていて2024/5/15...
-
Googleスプレッドシートでファ...
-
エクセルで日付を数字+アルフ...
-
エクセル②
-
エクセル 文字を増やしたい。
-
【マクロ】毎回、ファイル名が...
-
[関数得意な方]教えて下さい・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報