いつもこちらで勉強させていただいています。
まだまだ、自力ではコードを書くのが難しくこちらを参考にしながら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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
【エクセル】区切り文字が含まれるデータを縦に展開する方法
Excel(エクセル)
-
/"でセル内の文字を縦に分割するマクロについて"
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
VBAで文字列を数値に変換したい
Excel(エクセル)
-
5
エクセル 横並びの複数行データを縦1列にしたい
Excel(エクセル)
-
6
エクセルで縦のカラムデータをカンマ区切りで出力したい。
PostgreSQL
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
複数セルに入力した数字をカンマを入れてつなげる
Excel(エクセル)
-
9
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
10
Excel、VBA、1行中複数セルにセル内改行、行方向に分割
Excel(エクセル)
-
11
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
12
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
13
エクセルで横並びの複数データを縦の一本のデータにしたい
Excel(エクセル)
-
14
エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・
Excel(エクセル)
-
15
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
16
エクセルVBA 「On Error GoTo 0」について
Excel(エクセル)
-
17
エクセルで横データを縦に並べ変えたいです。
財務・会計・経理
-
18
エクセルマクロ:複数列 重複があった場合、メッセージと印入れる方法
Excel(エクセル)
-
19
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
20
VBA横のデータを縦にする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
【VBA】2つのシートの値を比較...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
エクセルVBA intersect colu...
-
マクロ 最終列をコピーして最終...
-
マクロについて。S列の途中から...
-
EXCEL VBA 条件に合致しない行...
-
エクセルVBAにて =A1=B1とすれ...
-
エラーコード1004
-
VBマクロ 色の付いたセルを...
-
【Excel VBA】カンマと改行コー...
-
URLのリンク切れをマクロを使っ...
-
VBAで指定範囲内の空白セルを左...
-
エクセルで最大列を増やす
-
vba 重複データ合算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報