A列を入力してC列に入力が無いという事はないと思いますが、A列に入力がある場合C列にも入力があり、かつC列は連続したデータ(途中に空白セルがない)であるという事が前提です。
入力後、A列、C列の修正があった場合の事を想定して、必ず2行目から動作するようにしています。
大量のデータを入力する場合は、動作がどんどん遅くなっていくのでおすすめしません。
1 行目にタイトル行で2行目から実データとして
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet.UsedRange
MaxRow = .Rows(.Rows.Count).Row
End With
For INP = 2 To MaxRow
If Range("A" & INP) = "交際費" Or Range("A" & INP) = "食費" Or Range("C" & INP) = "" Then
Range("B" & INP) = ""
ElseIf Range("A" & INP) <> "" Then
Range("B" & INP) = 1
Else
If Range("B" & INP - 1) = "" Then
Range("B" & INP) = ""
Else
Range("B" & INP) = Range("B" & INP - 1) + 1
End If
End If
Next INP
End Sub
Sheet見出し上で右クリック → コードの表示 → VBE画面が出ますので貼り付けてください。
あとは普通にデータを入力していけば動作します。
すべての入力が終わってから動作すればいいのであれば
Private Sub Worksheet_SelectionChange(ByVal Target As Range)の部分を
Sub Macro1()にしてマクロを実行して下さい。
こんにちは!
横からお邪魔します。
(1)はちょっと保留にさせてください。
(2)に関してはNo.1さんから回答が出ていますので・・・
No.2さんの補足内の
>1回目入力し2回目以降、自分でいれたデータを自分で消せばいいですが
>消し忘れがないように自動でセルのデータを削除できるようにしたいです
に関してだけの投稿です。
VBAになってしまいますが・・・
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
データ範囲(数式が入っていても問題ありません)を範囲指定し、マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub 消去() 'この行から
Dim c As Range
For Each c In Selection
If Not c.HasFormula Then
c.ClearContents
End If
Next c
End Sub 'この行まで
※ 必ず範囲指定後、マクロを実行してください。
これで数式はそのまま残り、生データが消去されると思います。
参考になりますかね?m(_ _)m
補足
説明不足ですみません。 EXCELについは関数の一部を勉強したくらいでVBAも知りません。 EXCELからシステムにアップするためのEXCELのフォーマットをつくりたいのです。 このフォーマットは何度も繰り返し使います 1回目入力し2回目以降、自分でいれたデータを自分で消せばいいですが 消し忘れがないように自動でセルのデータを削除できるようにしたいです 白色にするのではなく元のデータを完全になくしたいです。