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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Excel(エクセル) Excelについて 4 2023/03/02 09:24
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
Excelのシートを、まとめて表示...
-
Excel、同じフォルダ内のExcel...
-
前の(左隣の)シートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
VBAでシートコピー後、シート名...
-
シートの保護のあとセルの列、...
-
Excelで同じシートのコピーを一...
-
エクセルでファイルを開いたと...
-
別シートの最終行に貼り付けす...
-
エクセルで前のシートを連続参...
-
EXCELで1ヶ月分の連続した日付...
-
EXCELで同一フォーマットのシー...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルVBAでパスの¥マークに...
-
エクセルでシート名を自動入力...
-
複数のピボットを同じフィルタ...
-
シート名ではなく、相対位置で...
-
シート1に列挙したNGワードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数シートの保護を...
-
Excelで同じシートのコピーを一...
-
VBAでシートコピー後、シート名...
-
別シート参照のセルをシート毎...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイルを開いたと...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
前の(左隣の)シートを連続参...
-
EXCELで1ヶ月分の連続した日付...
-
Excel VBについての質問です。
-
複数シートの特定の位置に連番...
-
エクセルで前のシートを連続参...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
Accessのスプレッドシートエク...
-
Excel、同じフォルダ内のExcel...
-
excelでシート毎の最終更新日を...
-
Excelのシートを、まとめて表示...
-
EXCELで同一フォーマットのシー...
おすすめ情報
ご回答本当にありがとうございます。
おっしゃる通り各シートに表示するのはA列のみです。(実際には製品番号で、重複してる番号はなく、あとは案内文にvlookで色々反映させるつもりです)
それがすみません、やってみましたが、レベルが低く、できません(><)
実際には、
お客様名は“リスト”シートのH列
お客様名のついた各シートのH38、S38セルにそれぞれ製造番号を入れていきたいです。
その場合回答頂いたVBAのどこを変えればよいでしょうか?
教えて頂けたら幸いです。