• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで…関数かマクロか?)

Excelで関数かマクロか?

このQ&Aのポイント
  • Excel2007を使っている場合、特定の条件に応じて値を表示させたい場合、IF関数やマクロを使用することができます。
  • IF関数を使用する場合、数値のプラスマイナスを判断し、条件に応じて任意のセルに値を表示することができます。
  • マクロを使用する場合、VBAを使って任意のセルに計算結果を表示させることができます。マクロを使用するとより高度な条件判断や自動化が可能です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208392
noname#208392
回答No.1

>A3のセルに -1000 と入力すると、C3のセルに 1000 と表示され、A3に 1000 と入力すると、 B3のセルに 1000と表示されるように 難しく考える必要はありません。 C3のセルに = If (A3<0,-A3, "") B3のセルに = If (A3>=0,A3, "") とそれぞれ書いておけばいいのです。 マクロではできません。 マクロでやるとすると全部入力した後に、マクロを走らせて、B列とC列を埋めるような使い方のシートになります。

y_hisakata
質問者

お礼

ああ、こういう考え方でよかったのか!! 助かりました。ありがとうございます。

その他の回答 (4)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

補足。 合計するなら、0でも埋めておくのが良いのでは。 残高0はどうするのか。 分けた後合計、というなら、SUMIF関数も見ておくのが良いです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

記入と同時に作動するマクロの一例です。 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)
回答No.3

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)
回答No.2

#1さんの関数案に賛成です。 ただ、マクロでも可能ですので補足的に。 シートのセルが変更されるたびに走るマクロで、  入力されたセルの位置を取得し、  条件付けで位置を決めて書き込む。 というマクロを組めばできます。 ただ、例えば「食品ならSheet1にとか、交通費ならSheet2に」とかいった細かい条件付けがあったり、「購入した店別に一覧表にしたい」とかいうようなややこしいことをしたい場合でも、割と簡単な(一般的な)関数を組み合わせることで大抵のことは可能ですので、とりあえず何でも関数で解決する方向で考えてみて、どうしても駄目なところをマクロに求めていくのが良いかと思います。

関連するQ&A