A2~I4179列にあるリストを支社名ごとにシートに分けたいです。
各シート名はA列にある支社名としたい。
各シートごとに分けたリストにはリストの見出しをつけたい。
以下VBAコードで実施するとリストの見出しに該当するA2~I2が支社名シートとして1つのシートになり他のシートのリストに付与されないです。
どこを修正したら良いかご教示お願いします。
Sub SheetSeparation()
Dim lastRow As Long
Dim i As Long
Dim sheetName As String
' シート名「元データ」にデータがある前提
sheetName = "元データ"
' 元データの最終行を取得
lastRow = Sheets(sheetName).Cells(Rows.Count, "A").End(xlUp).Row
' 支社名ごとにシートを作成
For i = 2 To lastRow
' B列の値を取得
Dim companyName As String
companyName = Sheets(sheetName).Cells(i, "A").Value
' 支社名のシートが存在しなければ作成
If Not WorksheetExists(companyName) Then
Sheets.Add(After:=Sheets(Sheets.Count)).Name = companyName
End If
' データをコピーしてシートに貼り付け
Sheets(sheetName).Rows(i).Copy Destination:=Sheets(companyName).Cells(Rows.Count, "A").End(xlUp).Offset(1)
Next i
End Sub
Function WorksheetExists(sheetName As String) As Boolean
On Error Resume Next
WorksheetExists = Not Sheets(sheetName) Is Nothing
On Error GoTo 0
End Function
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは
ご質問の内容がよくわからないのですが・・・
>各シートごとに分けたリストにはリストの見出しをつけたい。
いわゆるタイトル行として、元データのタイトル行をコピーしたいという意味と解釈しました。
>リストの見出しに該当するA2~I2が支社名シートとして
>1つのシートになり他のシートのリストに付与されないです。
意味がよくわからないのですが、一つのシートにはタイトル行が付いているけれど、他のシートにはタイトルがつかないということでしょうか?
もしもそうであるなら・・・
タイトル行がどこなのかも不明ですが、想像するところ2行目なのかなと勝手に解釈。
以上の仮定が合っているのなら、
ご提示のコードではループで元データの2行目から最終行までを処理していますが、2行目が処理されるのは1度のみで、A2セルの値に該当するシートが作成されてそこにコピーされるだけの結果になります。
(当然ながら、他のシートには2行目はコピーされないでしょう)
>どこを修正したら良いかご教示お願いします。
ループで処理するのは、実データがあると思われる3行目(?)からで良いのではないでしょうか?
更に、タイトル行を各シートに設けたければ・・
新しいシートを作成した際に、併せて「タイトル行をコピーしておく」ようになされば宜しいでしょう。
具体的には、
>' 支社名のシートが存在しなければ作成
のところで、タイトル行をコピーするようにしておけば宜しいかと。
※ ご質問の内容がよくわからないので、当たるも八卦の回答になっています。
※ 意味が違っていたなら無視してください。
No.2
- 回答日時:
確認です。
添付図の上から順に、
シート名:元データ
シート名:大阪
シート名:名古屋
の画像です。
以下のように作成すれば良いのでしょうか。
1.元データの2行目が見出しで、データ行は3行目から開始する。
2.支社のシート(大阪、名古屋)は、以下のように作成する。
①1行目は空白行とする。
②2行目は、元データの2行目をそのままコピーする。
③3行目以降は、元データの対象となる行を順にコピーする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) EXCEL VBA シート比較し〇×判定 1 2021/11/19 11:49
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) マクロを修正できないものか、統合シートについて 3 2021/12/07 09:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
同じ作業を複数のシートに実行...
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
ブック名、シート名を他のモジ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
【Excel VBA】Worksheets().Act...
-
VBA 入力月で該当シートを選択...
-
実行時エラー'1004': WorkSheet...
-
VBAで大量のファイルをシート名...
-
実行時エラー1004「Select メソ...
-
VBA 検索して一致したセル...
-
Excelマクロのエラーを解決した...
-
IFステートの中にWithステート...
-
エクセルのマクロでアクティブ...
-
VBAで指定シート以外の選択
-
【VBA】色のついたシート名を取得
-
セルの値によって、シート見出...
-
Excel VBA マクロ 先頭行の固定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報