
いつもこちらで勉強させていただいています。
まだまだ、自力ではコードを書くのが難しくこちらを参考にしながらVBAを勉強しております。
色々探したのですが、同じような内容が見当たらず・・・ご教授頂きたいです!
A列に名前、B列に商品名が入っている50行くらいのデータがあります。
B列の商品名はカンマ区切りで複数入っています。(個数はバラバラ)
このデータを別シートに
A列に名前、B列に商品を1つずつ入るように形成したいです。
一行だけだったら簡単に出来たのですが、複数行あり最後の行にくっつけたいと言うのがどうかけば良いのかわからなくて困っております。
教えて頂けると嬉しいです。よろしくお願いいたします。

No.4ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに設定してください。
元のシートをSheet1、別シートをSheet2としています。
(これはあなたの環境にあわせて適切に設定してください)
別シートの2行目以降からマクロで書き込みを行います。
別シートの1行目の見出しは、あなたがあらかじめ作成しておいてください。
-----------------------------------------
Option Explicit
Public Sub 注文分割()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim row1 As Long
Dim row2 As Long
Dim maxrow As Long
Dim words As Variant
Dim i As Long
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
sh2.Rows("2:" & Rows.Count).ClearContents
maxrow = sh1.Cells(Rows.Count, "A").End(xlUp).Row 'sheet1 A列の最大行取得
row2 = 2
For row1 = 2 To maxrow
words = Split(sh1.Cells(row1, "B").Value, ",")
If UBound(words) < 0 Then
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
row2 = row2 + 1
End If
For i = 0 To UBound(words)
If i = 0 Then
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A").Value
End If
sh2.Cells(row2, "B").Value = words(i)
row2 = row2 + 1
Next
Next
MsgBox ("完了")
End Sub
ありがとうございます!!!
なんとこのままで思う通りの動作をしました。
貼り付けたあとに1つ1つ内容を確認していってます。
大変勉強になりました!!ありがとうございました。
No.5
- 回答日時:
こんばんは
シート名が不明なので適当に設定してあります。
Sub Q12898135()
Dim sht As Worksheet
Dim rng As Range, v
Dim Mrw As Long, rw As Long, drw As Long
Set sht = Worksheets("Sheet1") '←元データのあるシート
With Worksheets("Sheet2") '←別シート
Mrw = sht.Cells(Rows.Count, 1).End(xlUp).Row
.Columns("A:B").ClearContents
sht.Range("A1:B1").Copy .Range("A1:B1")
Set rng = .Cells(2, 2)
For rw = 2 To Mrw
v = Split(Replace(sht.Cells(rw, 2).Text, "、", ","), ",")
rng.Offset(, -1).Value = sht.Cells(rw, 1).Value
drw = UBound(v) + 1
If drw > 0 Then
rng.Resize(drw).Value = WorksheetFunction.Transpose(v)
End If
Set rng = rng.Offset(Application.Max(drw, 1))
Next rw
End With
End Sub
ありがとうございます!!!
思う通りの動きをしました!!
内容がかなりわたりにはレベルが高い感じで
このように書くこともできるんだーとただただ感心してしまいました。
本当にありがとうございます!
No.3
- 回答日時:
こんにちは
同様のご質問はQAサイトではよく見るご質問ですね
ですので取り合えず やり方の一例です
①A列でループ処理を行う For・・・
別シートA列に出力
②B列をカンマ区切りで分ける Split
③分けたデーター個数分 ループする
別シートB列に出力
出力する度に行を増やす(下へ)(変数を+1)
(行を増やす変数はA列出力B列出力共通の変数にする)
①に戻る Next(行方向で)
そんなに処理数は多くないので・・Split あたりを検索して
参考サイトを見てみましょう。
ループ内の
(行を増やす変数はA列出力B列出力共通の変数にする)
を考えれば理解できると思います。。
コード書いた方が判り易いですか?
ありがとうございます!!!
教えていただいた内容ふむふむとわかった気になっておりましたが
実際に書こうとしたら③が??となってしまいました。。
他の方がコードも記載してくださっているようなので
それでももし分からないとなったら、、、、またお助け頂けると嬉しいです!!!
No.2
- 回答日時:
>最後の行にくっつけたいと言うのがどうかけば良いのかわからなくて
既にデータが入っているのでその続きに付け足したいと言う事でしょうか?
ようはB列の最終行の次の行にA・B(1番目のデータ)列に値を入れたい?
探すっていうのも丸々同じ質問に当たる事はそんなにないですよ。
⇒BMIの計算ってのは毎年見ますけど。
どの様にデータを弄り何をすべきかって事で検索しますけど、多分そこが悩まれているのかな?
1行であれば出来たならあとは繰り返すループ処理でしょうね。
その際どこに書き出すかを何で取得するかが大きいかも。
ありがとうございます!
まさしくループ処理の部分で困ってしまっていました。
何をどのような順番で書いてループさせれば良いのか?というのが????となってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【エクセル】区切り文字が含まれるデータを縦に展開する方法
Excel(エクセル)
-
VBA横に並んでいるデータを縦に並ぶデータにしたいです。
Visual Basic(VBA)
-
エクセルで縦のカラムデータをカンマ区切りで出力したい。
PostgreSQL
-
-
4
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
5
エクセルで横データを縦に並べ変えたいです。
財務・会計・経理
-
6
【ExcelVBA】指定のシート以外を削除する方法
Visual Basic(VBA)
-
7
VBA 指定した列にある日時データから時間を削除する方法について
Excel(エクセル)
-
8
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
二つのリストを比べて部分一致...
-
VBA 何かしら文字が入っていたら
-
vba 2つの条件が一致したら...
-
VBAを使って検索したセルをコピ...
-
複数の列の値を結合して別の列...
-
【VBA】2つのシートの値を比較...
-
URLのリンク切れをマクロを使っ...
-
エクセル 2つの表の並べ替え
-
エクセルでフォームのチェック...
-
VBAのFind関数で結合セルを検索...
-
【VBA】オートフィルタで抽出し...
-
【Excel VBA】カンマと改行コー...
-
難問 VBA 今日の日付より前に対...
-
マクロについて。S列の途中から...
-
Excel VBA 初心者です 近似値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
DataGridViewに空白がある場合...
-
VBAを使って検索したセルをコピ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBA 列が空白なら別のマクロへ...
おすすめ情報