ゴリラストロングの雑記帳

月収10万円の広告収入を目指す自称専業ライターのブログです。




【VBA】オートフィルターを用いたデータ分割の使用例。スパークラインのちょっとした応用例もあります。




どうも、ゴリラストロングです。

 

今回はVBAで、オートフィルターを用いたデータ分割の使用例を作成してみました。
スパークラインのちょっとした応用例も含まれています。

 

<元データ>

f:id:gorilla-strong:20200326154431p:plain

シート1の「元データ」シートには分割元のデータが記載されています。

C列の「所属」をキーワードにして、シートごとに分割します。

 

 

f:id:gorilla-strong:20200326154533p:plain

シート2の「会社名」シートは各シートに名前を付けるために便宜的に作成してあります。

 

 

<マクロ実行後>

f:id:gorilla-strong:20200326155344p:plain

f:id:gorilla-strong:20200326155419p:plain

上図のように、所属ごとにデータが分割され、各行にスパークラインが設定されています。

動作としては以上です。

 

 

 スポンサーリンク

 

 

ソースコード

Sub テスト()

Dim ws1 As Object
Set ws1 = ThisWorkbook.Worksheets(1)

Dim ws2 As Object
Set ws2 = ThisWorkbook.Worksheets(2)

Dim Snum As Long
Snum = WorksheetFunction.CountA(ws2.Range("A:A"))

Worksheets.Add After:=ws2, Count:=Snum

Dim lastrow As Long
lastrow = ws2.Cells(Rows.Count, 1).End(xlUp).Row


For i = 1 To lastrow

Dim Sname As String
Sname = ws2.Range("A" & i)

Worksheets(i + 2).Name = Sname

ws1.Cells.Copy
Worksheets(i + 2).PasteSpecial

Next



For j = 3 To Snum + 2

Dim lastrow2 As Long
lastrow2 = ws1.Cells(Rows.Count, 1).End(xlUp).Row

Dim lastcolumn As Long
lastcolumn = ws1.Cells(2, Columns.Count).End(xlToLeft).Column



Dim sheetname As String
sheetname = Worksheets(j).Name


ThisWorkbook.Worksheets(j).Range("A2").AutoFilter Field:=3, Criteria1:="<>" & sheetname

ThisWorkbook.Worksheets(j).Range("3:" & lastrow2).Delete

ThisWorkbook.Worksheets(j).Range("A2").AutoFilter

Dim lastrowmove As Long
lastrowmove = ThisWorkbook.Worksheets(j).Cells(Rows.Count, 1).End(xlUp).Row

Dim num As Long, buf As String
num = lastcolumn
buf = Cells(1, num).Address(True, False)
buf = Left(buf, InStr(buf, "$") - 1)


ThisWorkbook.Worksheets(j).Activate

Call ThisWorkbook.Worksheets(j).Range(Cells(3, lastcolumn + 1), Cells(lastrowmove, lastcolumn + 1)).SparklineGroups.Add(xlSparkLine, "D3:" & buf & lastrowmove)

Next


End Sub

 最終列の列番号を取得し、アルファベットに変換するのが難しかったです。

 

 

<参照させていただいたサイト>

https://www.moug.net/tech/exvba/0050046.html

https://officedic.com/excel-vba-sparkline-add/#toc7

 

 

以上、ゴリラストロングでした。

 

スポンサーリンク