プロが教える店舗&オフィスのセキュリティ対策術

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件)

No2です。


画像が誤っていたので、訂正します。
A列が支社名です。(No2の画像はB列が支社名になっていました)
「A2~I4179列にあるリストを支社名ご」の回答画像3
    • good
    • 0

確認です。


添付図の上から順に、
シート名:元データ
シート名:大阪
シート名:名古屋
の画像です。

以下のように作成すれば良いのでしょうか。
1.元データの2行目が見出しで、データ行は3行目から開始する。
2.支社のシート(大阪、名古屋)は、以下のように作成する。
①1行目は空白行とする。
②2行目は、元データの2行目をそのままコピーする。
③3行目以降は、元データの対象となる行を順にコピーする。
「A2~I4179列にあるリストを支社名ご」の回答画像2
    • good
    • 0

こんにちは



ご質問の内容がよくわからないのですが・・・

>各シートごとに分けたリストにはリストの見出しをつけたい。
いわゆるタイトル行として、元データのタイトル行をコピーしたいという意味と解釈しました。

>リストの見出しに該当するA2~I2が支社名シートとして
>1つのシートになり他のシートのリストに付与されないです。
意味がよくわからないのですが、一つのシートにはタイトル行が付いているけれど、他のシートにはタイトルがつかないということでしょうか?

もしもそうであるなら・・・
タイトル行がどこなのかも不明ですが、想像するところ2行目なのかなと勝手に解釈。
以上の仮定が合っているのなら、

ご提示のコードではループで元データの2行目から最終行までを処理していますが、2行目が処理されるのは1度のみで、A2セルの値に該当するシートが作成されてそこにコピーされるだけの結果になります。
(当然ながら、他のシートには2行目はコピーされないでしょう)


>どこを修正したら良いかご教示お願いします。
ループで処理するのは、実データがあると思われる3行目(?)からで良いのではないでしょうか?
更に、タイトル行を各シートに設けたければ・・
新しいシートを作成した際に、併せて「タイトル行をコピーしておく」ようになされば宜しいでしょう。
具体的には、
>' 支社名のシートが存在しなければ作成
のところで、タイトル行をコピーするようにしておけば宜しいかと。


※ ご質問の内容がよくわからないので、当たるも八卦の回答になっています。
※ 意味が違っていたなら無視してください。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A