• ベストアンサー

Excelで勤務表を作成。

勤務表を作成しています。 赤いセル「/。」は、希望休です。 勤務表の組み直しを行うため、希望休以外を一括で削除して空白にしたいのですが、そのようなマクロを組む事はできますか? 色で判別するよりも、入力してある文字「/。」で判別して、それ以外に入力してある文字を削除できるようにしたいです。

みんなが選んだベストアンサー

  • ベストアンサー
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

別のシートのA1セルに、以下の式を記入し、勤務表のデータの「/。」以外のセルを空白にした表を作り、それをコピーして、元の勤務表に形式を指定して、値のみ貼り付けてはいかがでしょう。 =IF(A1="/。",A1,"")

kokosu525
質問者

お礼

VBA以外の方法を教えていただきありがとうございます。 ただ、シートが1月~12月まで並んでいるので、その方法だとシートが24枚になるので、VBAでどうにかできればと思います。

その他の回答 (3)

回答No.4

#3 行とか列を選択してしまうと、名前とか見出しが消えてしまうので、 'ネタシートで、処理対象のセル範囲を選択して実行

kokosu525
質問者

お礼

ありがとうございます

回答No.3

'ネタシートで行(範囲)を選択して実行 '罫線は消さないよ! Option Explicit Sub SweepRobo() Const xExcept = "/。" Dim xRange As Range If (Selection.Areas.Count > 0) Then Debug.Print (Selection.Areas.Count) ' For Each xRange In Selection.Areas For Each xRange In Selection If (xRange.Value <> xExcept) Then ' xRange.Clear xRange.ClearContents xRange.Interior.ColorIndex = xlNone If ((xRange.Column Mod 10) = 1) Then Debug.Print (xRange.Row & ":" & xRange.Column) End If Else Debug.Print (xRange.Row & ":" & xRange.Column & ": no Problem!!") End If Next Else End If End Sub

kokosu525
質問者

お礼

ありがとうございます

回答No.2

'ネタシートで行(範囲)を選択して実行 Option Explicit Sub SweepRobo() Const xExcept = "/。" Dim xRange As Range If (Selection.Areas.Count > 0) Then Debug.Print (Selection.Areas.Count) ' For Each xRange In Selection.Areas For Each xRange In Selection If (xRange.Value <> xExcept) Then xRange.Clear If ((xRange.Column Mod 10) = 1) Then Debug.Print (xRange.Row & ":" & xRange.Column) End If Else Debug.Print (xRange.Row & ":" & xRange.Column & ": no Problem!!") End If Next Else End If End Sub

kokosu525
質問者

お礼

回答ありがとうございます。 なにか私の説明が足りないのでしょうか。 うまく実行ができないです。 'ネタシートで行(範囲)を選択して実行 Option Explicit Sub SweepRobo() Const xExcept = "/。" Dim xRange As Range If (Selection.Areas.Count > 0) Then Debug.Print (Selection.Areas.Count) ' For Each xRange In Selection.Areas For Each xRange In Selection If (xRange.Value <> xExcept) Then ' xRange.Clear xRange.ClearContents←ここの部分に警告がでます。 xRange.Interior.ColorIndex = xlNone If ((xRange.Column Mod 10) = 1) Then Debug.Print (xRange.Row & ":" & xRange.Column) End If Else Debug.Print (xRange.Row & ":" & xRange.Column & ": no Problem!!") End If Next Else End If End Sub