(1)VBAで行う
(2)フィルタオプションの設定で行う
(2)は別シートに出すのにコツがいります。
ーー
空白セルは扱いがややこしいので、99に置換しておきます。
下記の99は元は空白セル。(本番では99は多で起こらない値を考えてください)
コード 計数
30 12
99 11
21 12
22 14
11 34
30 25
23 5
30 4
99 11
15 10
ーーー
Sheet2のD1:E3に
コード 計数
30
99
と条件を作っておく。
ーーーー
Sheet2を選択しておく。
データーフィルターフィルタオプションの設定
ダイアログが出るが
指定した範囲をON
リスト範囲 Sheet1!$A$1:$B$11
検索条件範囲 $D$1:$D$3
抽出範囲 $A$1:$B$19
と選択して(各々の斜め矢印をクリックして、範囲を選択すればよい、シートの選択はシートタブのクリック)
OK
結果
コード 計数
30 12
99 11
30 25
30 4
99 11
ーーー
>元のデータをその抽出したデータだけに置き換えたい
は元へ(Sheet1)へコピー張り付けすればよい。
>毎月同じような行数のデータを、同じように加工しなければ
ならないので簡単に出来るやり方を教えて下さい
マクロの記録をとると
Sub Macro1()
Sheets("Sheet1").Select
Range("A2:A11").Select
Selection.Replace What:="", Replacement:="99", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'以上置換操作
'以下フィルタオプション
Sheets("Sheet1").Range("A1:B11").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("D1:D3"), CopyToRange:=Range("A1:B19"), Unique:= _
False
End Sub
これを下記に修正する。
(1)データ行の多少、毎月で最終行の変動
(2)Sheet1,Sheet2の両方が対象になることを明確化に対応。
Sub Macro1()
Worksheets("Sheet1").Select
d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
Worksheets("Sheet1").Range("A2:A" & d).Select
Selection.Replace What:="", Replacement:="99", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'---
Worksheets("Sheet1").Range("A1:B1" & d).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("Sheet2").Range("D1:D3"), CopyToRange:=Worksheets("Sheet2").Range("A1:B1000"), Unique:= _
False
End Sub
ーー
結果は手操作と同じになりました。
ーー
空白は99などに置き換えなければダメかどうかゆっくり検証できないので、とりあえず急いで上記でまとめた。