LoginSignup
1
0

More than 5 years have passed since last update.

Excelでフィルター機能を使用したときの抽出漏れを防ぐTips

Last updated at Posted at 2018-10-10

1. はじめに

Excelでの資料作成ってなくならないですよね。
今回はExcelでのフィルター機能を使用したときに痒いところに手が届くTipsを投稿します。
※手作業でやると結構時間かかるし、面倒なことをマクロで自動化します。
※同じような作業をしている方の作業時間短縮に貢献できれば幸いです。

2. こんなことありませんか?

以下の図のように、Excelで案件と作業者を管理しているようなファイルがあるとします。

image.png

これをC案件でフィルタリングすると、

image.png

こうなりますよね。

これだと困るので、空白部分を上の案件名で白文字埋めしてほしいというのが私への作業依頼でした。

白文字埋めしておくと、

image.png

こうなるわけですね。

この例だと数が少ないので大したことないですが、手作業で数千行とかの単位になってくると泣けてきます。

僕は何をやっているんだろうと。こんな作業さっさと終わらせてやる!!!

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

はい、内容は非常に単純です。一応簡単に説明しておきます。

  1. ユーザが選択したセル範囲を列行でループしてセルを参照していきます。
  2. セルに文字入力がある、かつ白文字でない場合はコピー元の文字列と認識します(コピーする条件)。
  3. 2.以外でセルが白色の場合(コピーされる条件)、白文字でコピーします。

4. おわりに

コピーする条件、コピーされる条件はそれぞれ異なるかと思いますので、状況に合わせて変えていただければ使用できるのではないかと思います。
技術者の方々にはこんなのフツーってなるかもしれませんが、そうでない事務作業をされている方々の助けに少しでもなればと思います。
マクロって地味に便利ですよね。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0