Excel2010で教えて下さい
先頭シートに以下のような内容の“リスト”シートがあります。(A列に商品名。B列にお客様名。)
....A........B
1 商品a 田中
2 商品c 田中
3 商品a 鈴木
4 商品b 鈴木
5 商品c 佐藤
6 商品d 佐藤
このように、同一人物が2連続で表示。全ての人が2つずつ連続で並んでいます。
“リスト”シートの右に“案内文”シートがあります。
田中さんへの案内文のC1セルには商品a、C2セルには商品cと順番に入れて、お客様ごとのシートを右にどんどん追加するイメージで作成したいです。
今マクロできたのが
①リストの上から順番にお客様の名前のシートを作成する。お客様の名前1つ飛ばしでの作成がわからず、②全て作成した後、重複シートを削除する
という2種類のVBAを作りました。
ここまでできたのですが、
各シートに上から2こずつ順番に商品名を入れていくマクロの作り方がわかりません。
マクロでなくてもいいのですが、教えて頂けたらと思います。よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
No.1です。
前回は余計なお世話を焼いてしまったようですね。
>今マクロできたのが
>①リストの上から順番にお客様の名前のシートを作成する。お客様の名前1つ飛ばしでの作成がわからず、②全て作成した後、重複シートを削除する
という2種類のVBAを作りました。
というコトですので、↓の画像のように「リスト」シートに存在する顧客名のシートはすでに作成済みだという前提のコードにしました。
尚、画像のように「リスト」シートのH列(顧客名)は必ず連続していて、2行と決まっている!
という前提のコードです。
前回のコードは消去し↓のコードにしてみてください。
Sub Sample2()
Dim k As Long, c As Range, sN As String, wS As Worksheet
For k = 2 To Worksheets.Count
sN = Worksheets(k).Name
Set wS = Worksheets(sN)
With Worksheets("リスト")
Set c = .Range("H:H").Find(what:=sN, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then '←念のため//
wS.Range("H38") = .Cells(c.Row, "A")
wS.Range("S38") = .Cells(c.Row + 1, "A")
End If
End With
Next k
End Sub
こんな感じではどうでしょうか?m(_ _)m
余計なお世話なんてとんでもないです!
そしてできました!
画像まで、ほんとにその通りです!
ありがとうございましたっほんとうに助かりました!!
No.1
- 回答日時:
こんばんは!
各シートに表示するのはA列だけでよいのですね?
一例です。
元データ(シート見出しの一番左側シート)は
1行目が項目行でデータは2行目以降にあるとします。
※ ↑オートフィルタで処理するようにしていますので、項目行が必要です。※
尚、同一ブック内に同じシート名は付けられませんので
B列顧客名がなければシートを追加!あればそのシートに上書きする方法にしてみました。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, k As Long, lastRow As Long
Dim sN As String, wS As Worksheet, myFlg As Boolean
Application.ScreenUpdating = False
With Worksheets(1)
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("C:c").Insert '←作業用の列(C列)を挿入//
.Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=.Range("C1"), unique:=True
For i = 2 To .Cells(Rows.Count, "C").End(xlUp).Row
sN = .Cells(i, "C")
For k = 2 To Worksheets.Count
If Worksheets(k).Name = sN Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sN
End If
Set wS = Worksheets(sN)
wS.Cells.Clear
With .Range("A1")
.AutoFilter field:=2, Criteria1:=sN
Range(.Cells(1, "A"), .Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
End With
myFlg = False
Next i
.AutoFilterMode = False
.Range("C:C").Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
【VBA】PDF出力に任意のファイル名前を付ける方法
Excel(エクセル)
-
-
4
Excelのマクロで、特定のセルから順番に値を取得したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
excelでシート毎の最終更新日を...
-
シートを追加・名前を次月に変...
-
Excelのシートを、まとめて表示...
-
エクセル 計算式も入っていない...
-
特定のシートの削除を禁止した...
-
エクセルで前のシートを連続参...
-
エクセルでファイルを開いたと...
-
Accessのスプレッドシートエク...
-
Excel、同じフォルダ内のExcel...
-
シートの保護のあとセルの列、...
-
エクセルのシート名をリスト化...
-
別シート参照のセルをシート毎...
-
前の(左隣の)シートを連続参...
-
エクセルVBAでパスの¥マークに...
-
エクセルで毎回1枚目のシートを...
-
VBAでシートコピー後、シート名...
-
EXCELで1ヶ月分の連続した日付...
-
Excelで同じシートのコピーを一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルVBAでパスの¥マークに...
-
前の(左隣の)シートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
Excelのシートを、まとめて表示...
-
エクセルのシート名をリスト化...
-
VBAでシートコピー後、シート名...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
シートの保護のあとセルの列、...
-
エクセル 計算式も入っていない...
-
エクセルで複数設定したハイパーリンク先...
-
EXCELで1ヶ月分の連続した日付...
-
Excel、同じフォルダ内のExcel...
-
Accessのスプレッドシートエク...
-
EXCELで同一フォーマットのシー...
-
excelでシート毎の最終更新日を...
おすすめ情報
ご回答本当にありがとうございます。
おっしゃる通り各シートに表示するのはA列のみです。(実際には製品番号で、重複してる番号はなく、あとは案内文にvlookで色々反映させるつもりです)
それがすみません、やってみましたが、レベルが低く、できません(><)
実際には、
お客様名は“リスト”シートのH列
お客様名のついた各シートのH38、S38セルにそれぞれ製造番号を入れていきたいです。
その場合回答頂いたVBAのどこを変えればよいでしょうか?
教えて頂けたら幸いです。