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.2
- 回答日時:
確認です。
添付図の上から順に、
シート名:元データ
シート名:大阪
シート名:名古屋
の画像です。
以下のように作成すれば良いのでしょうか。
1.元データの2行目が見出しで、データ行は3行目から開始する。
2.支社のシート(大阪、名古屋)は、以下のように作成する。
①1行目は空白行とする。
②2行目は、元データの2行目をそのままコピーする。
③3行目以降は、元データの対象となる行を順にコピーする。
No.1
- 回答日時:
こんにちは
ご質問の内容がよくわからないのですが・・・
>各シートごとに分けたリストにはリストの見出しをつけたい。
いわゆるタイトル行として、元データのタイトル行をコピーしたいという意味と解釈しました。
>リストの見出しに該当するA2~I2が支社名シートとして
>1つのシートになり他のシートのリストに付与されないです。
意味がよくわからないのですが、一つのシートにはタイトル行が付いているけれど、他のシートにはタイトルがつかないということでしょうか?
もしもそうであるなら・・・
タイトル行がどこなのかも不明ですが、想像するところ2行目なのかなと勝手に解釈。
以上の仮定が合っているのなら、
ご提示のコードではループで元データの2行目から最終行までを処理していますが、2行目が処理されるのは1度のみで、A2セルの値に該当するシートが作成されてそこにコピーされるだけの結果になります。
(当然ながら、他のシートには2行目はコピーされないでしょう)
>どこを修正したら良いかご教示お願いします。
ループで処理するのは、実データがあると思われる3行目(?)からで良いのではないでしょうか?
更に、タイトル行を各シートに設けたければ・・
新しいシートを作成した際に、併せて「タイトル行をコピーしておく」ようになされば宜しいでしょう。
具体的には、
>' 支社名のシートが存在しなければ作成
のところで、タイトル行をコピーするようにしておけば宜しいかと。
※ ご質問の内容がよくわからないので、当たるも八卦の回答になっています。
※ 意味が違っていたなら無視してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
複数のセルの入力文字数の合計の文字数制限のポップアップ
Excel(エクセル)
-
エクセルについて
Excel(エクセル)
-
[Excel] 以下のような、行がズレている2つの表を関数を使って同値チェックを行いたいです。 欲し
Excel(エクセル)
-
-
4
Excelでスクロールすると文字が消える現象について
Excel(エクセル)
-
5
xlsmファイルで、別名ファイルを保存する方法
Visual Basic(VBA)
-
6
【Excel】[Expression.Error] キーがテーブルのどの行とも一致しませんの解決法?
Excel(エクセル)
-
7
2つのシートを連動させたいです
Excel(エクセル)
-
8
「ChatGPT-3.5」の回答ですが
Excel(エクセル)
-
9
【VBA】エクセルで最後の不要な改行コードを削除するコードについて
Visual Basic(VBA)
-
10
Vba Cells.Findについて教えてください
Visual Basic(VBA)
-
11
複雑なシフト表から1日ごとの出勤者、シフトを抜き出したいです
Excel(エクセル)
-
12
Vba ユーザ定義関数について教えてください
Visual Basic(VBA)
-
13
【VBA】飛び飛びの3セルに完了"かもしくは"支援なし"の文字が入っていたら、計算を実行したい"
Visual Basic(VBA)
-
14
エクセル2016でfilter関数がないので、、抜き出す関数をおしえてください。
Excel(エクセル)
-
15
お世話になります エクセルについて質問です 下記添付ファイルのようなデータがあります。 1行目から3
Excel(エクセル)
-
16
エクセルで可視セルにのみ値貼り付けをする方法があったら教えて下さい やりたいこととしては フィルター
Excel(エクセル)
-
17
2013Excel保存済みファイルグレーアウト Excelを開こうとするとメニュー以外全てグレーにな
Excel(エクセル)
-
18
エクセルで リンクが切れない状態で文字を入れたい
Excel(エクセル)
-
19
エクセルのVBAでのコピー
Excel(エクセル)
-
20
こんにちは。Excelのデータ入力規則のことで教えてください。複数条件を指定したい場合の構文ですが、
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 検索して一致したセル...
-
別のシートから値を取得するとき
-
ExcelVBA シート名を複数セルか...
-
Excelマクロのエラーを解決した...
-
コマンドボタンをクリックでシ...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 最終行まで数式をコピーする
-
ユーザーフォームに入力したデ...
-
Access エクセルシート名変更
-
excelのマクロで該当処理できな...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
【EXCEL】ワークシートの名前を...
-
Excel マクロについての相談
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
vbaでworksheetfunctionでの複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報