|
こんにちは。かみちゃん です。
>下のような表です
>今回は記入漏れの人の名前がGとHで
>それを記入漏れと書いてある下に名前を出したいのです
>
> A B C D E F
> 担当者名 欠席 記入漏れ 名簿
>11班 A F A
>12班 B B
>13班 C C
>14班 D D
>15班 E E
> F
> G
> H
E列の名簿に基づいて、それぞれが記入されているかどうかをF列に一旦書き出して
書き出されていない場合は、D列に転記するというコードは以下の方法でできると
思います。
なお、記入されているかどうかは、VBAコード内でワークシート関数であるCOUNTIF
を利用しています。
記入漏れであれば、0が返されますので、それをオートフィルタで抽出しています。
Sub Macro1()
Dim c As Range
Dim LastCell As Range
Dim rngCount As Range
Dim rngNotWrite As Range
Application.ScreenUpdating = False
'記入漏れかどうかのチェック
Set rngCount = Range("A2", Range("A65536").End(xlUp)).Offset(, 1).Resize(, 2)
Set LastCell = Range("E65536").End(xlUp)
For Each c In Range("E2", LastCell).Offset(, 1)
c.Value = WorksheetFunction.CountIf(rngCount, c.Offset(, -1))
Next
'記入漏れがある場合は転記処理
With Columns("E:F")
.AutoFilter Field:=2, Criteria1:="0"
On Error Resume Next
Set rngNotWrite = Range("E2", Range("E65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
If rngNotWrite.Address <> "$E$1" Then
rngNotWrite.Copy Range("D2")
End If
.AutoFilter
.Item(2).ClearContents
End With
Application.ScreenUpdating = True
If rngNotWrite.Address <> "$E$1" Then
MsgBox "記入もれをチェックしました。"
Else
MsgBox "記入もれはありませんでした"
End If
End Sub
|
|