1. はじめに
Excelでの資料作成ってなくならないですよね。
今回はExcelでのフィルター機能を使用したときに痒いところに手が届くTipsを投稿します。
※手作業でやると結構時間かかるし、面倒なことをマクロで自動化します。
※同じような作業をしている方の作業時間短縮に貢献できれば幸いです。
2. こんなことありませんか?
以下の図のように、Excelで案件と作業者を管理しているようなファイルがあるとします。
これをC案件でフィルタリングすると、
こうなりますよね。
これだと困るので、空白部分を上の案件名で白文字埋めしてほしいというのが私への作業依頼でした。
白文字埋めしておくと、
こうなるわけですね。
この例だと数が少ないので大したことないですが、手作業で数千行とかの単位になってくると泣けてきます。
僕は何をやっているんだろうと。こんな作業さっさと終わらせてやる!!!
3. マクロを作成
ということで、この作業を自動化するために稚拙なマクロを作成しました。
Sub CreateWhiteWordCells()
Dim i As Long
Dim j As Long
Dim cellValue As String
For i = Selection(1).Column To Selection(Selection.Count).Column
For j = Selection(1).Row To Selection(Selection.Count).Row
If Cells(j, i).Value <> "" And Cells(j, i).Font.Color <> RGB(255, 255, 255) Then
'白文字でないセルデータが存在する場合
'コピー元のデータを保存
cellValue = Cells(j, i).Value
GoTo CONTINUE
Else
If Cells(j, i).Interior.Color = RGB(255, 255, 255) Then
'セルが白色の場合は白文字でコピー
Cells(j, i).Value = cellValue
Cells(j, i).Font.Color = RGB(255, 255, 255)
End If
End If
CONTINUE:
Next j
Next i
End Sub
はい、内容は非常に単純です。一応簡単に説明しておきます。
- ユーザが選択したセル範囲を列行でループしてセルを参照していきます。
- セルに文字入力がある、かつ白文字でない場合はコピー元の文字列と認識します(コピーする条件)。
- 2.以外でセルが白色の場合(コピーされる条件)、白文字でコピーします。
4. おわりに
コピーする条件、コピーされる条件はそれぞれ異なるかと思いますので、状況に合わせて変えていただければ使用できるのではないかと思います。
技術者の方々にはこんなのフツーってなるかもしれませんが、そうでない事務作業をされている方々の助けに少しでもなればと思います。
マクロって地味に便利ですよね。