- ベストアンサー
Excelで関数かマクロか?
- Excel2007を使っている場合、特定の条件に応じて値を表示させたい場合、IF関数やマクロを使用することができます。
- IF関数を使用する場合、数値のプラスマイナスを判断し、条件に応じて任意のセルに値を表示することができます。
- マクロを使用する場合、VBAを使って任意のセルに計算結果を表示させることができます。マクロを使用するとより高度な条件判断や自動化が可能です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>A3のセルに -1000 と入力すると、C3のセルに 1000 と表示され、A3に 1000 と入力すると、 B3のセルに 1000と表示されるように 難しく考える必要はありません。 C3のセルに = If (A3<0,-A3, "") B3のセルに = If (A3>=0,A3, "") とそれぞれ書いておけばいいのです。 マクロではできません。 マクロでやるとすると全部入力した後に、マクロを走らせて、B列とC列を埋めるような使い方のシートになります。
その他の回答 (4)
- layy
- ベストアンサー率23% (292/1222)
補足。 合計するなら、0でも埋めておくのが良いのでは。 残高0はどうするのか。 分けた後合計、というなら、SUMIF関数も見ておくのが良いです。
- merlionXX
- ベストアンサー率48% (1930/4007)
記入と同時に作動するマクロの一例です。 1. 該当するシートのタブを右クリックして、[コードの表示]。 2. 出てきた白い所に、以下のコードを貼付けます。 '********これより下********** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub 'A列以外は停止 If Target.Row < 3 Then Exit Sub '2行目以前は停止 If Not IsNumeric(Target) Then Exit Sub '数値以外は停止 On Error GoTo line Application.EnableEvents = False Cells(Target.Row, "B").Resize(, 2).ClearContents 'B、C列クリア If Target.Value > 0 Then '正数なら Cells(Target.Row, "B").Value = Target.Value 'B列に転記 ElseIf Target.Value < 0 Then '負数なら Cells(Target.Row, "C").Value = Abs(Target.Value) 'C列に絶対値を転記 End If line: Application.EnableEvents = True End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 これでOK A列3行目から下に数値を入力する都度、自動で実行されます。 誤入力して消去しても対応します。 0を入力しても反応はしません。(それでいいんですよね?)
- keithin
- ベストアンサー率66% (5278/7941)
A2,B2,C2にそれぞれ残高,収入,支出と記入 A3以下に残高を次々いれていくことにして B3には =IF(A3="","",IF(SUM(A2,-A3)<0,-SUM(A2,-A3),"")) C3には =IF(A3="","",IF(SUM(A2,-A3)>0,SUM(A2,-A3),"")) とそれぞれ間違えないように入れて,B3:C3を下向けにえいやっとコピーして埋めておきます。
- ihyou_P
- ベストアンサー率35% (50/141)
#1さんの関数案に賛成です。 ただ、マクロでも可能ですので補足的に。 シートのセルが変更されるたびに走るマクロで、 入力されたセルの位置を取得し、 条件付けで位置を決めて書き込む。 というマクロを組めばできます。 ただ、例えば「食品ならSheet1にとか、交通費ならSheet2に」とかいった細かい条件付けがあったり、「購入した店別に一覧表にしたい」とかいうようなややこしいことをしたい場合でも、割と簡単な(一般的な)関数を組み合わせることで大抵のことは可能ですので、とりあえず何でも関数で解決する方向で考えてみて、どうしても駄目なところをマクロに求めていくのが良いかと思います。
お礼
ああ、こういう考え方でよかったのか!! 助かりました。ありがとうございます。