[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『規定数到達時のメッセージとクリア』(tari)
IFSUM関数によりSheet1のA行に入力された数値が
Sheet2のA1に記録されています。そのSheet2のA1の値が
規定数毎(例えば10000毎)にメッセージが表示されて
その数値がクリアされ、0になるようにするにはどうすればいいのでしょうか?関数及びマクロ、どちらでもいいのでどなたか宜しくお願い致します。
< 使用 Excel:Excel2002、使用 OS:WindowsXP >
ちょっと真意を測りかねます。
Sheet1のA列に入力するのは毎回「1」なんですか?
多分そうじゃないと思うのですが、そうすると10000に近くなると (スゴロクみたいに)行き過ぎる数値が入るのが常態ですよね?
その時どういう展開になるんですか?
極端な話、初っ端に「20000」と入れたらどう言うことになればいいのか、 それを説明いただくと少しは解るかも知れません。
(半平太) 2016/12/02(金) 00:05
=MOD(現在のSUM計算式,10000) (???) 2016/12/02(金) 09:23
例:Sheet1 A行 Sheet2 A1
5000 10200 (この数値はA行の合計です。) 3000 ↑ 1000 | 1200 | この数値が10000を超えたらメッセージが表示されるようにしたい。
わかりにくくてすみません。宜しくお願いします。
(tari) 2016/12/02(金) 16:22
1.標準モジュールを挿入して、下記コードをコピペする。
2.Sheet2のA1セルに =Zclear(Sheet1!A:A,10000) と入力したら、 Sheet1への数値入力を開始する。
’「標準モジュール」に貼り付けるコード
Function Zclear(rng As Range, Limit As Double) Zclear = Application.Sum(rng)
If Zclear > Limit Then Zclear = 0 MsgBox "Limit(" & Limit & ")オーバー" End If End Function
'多分、実用にならない案でしょうね・・・
(半平太) 2016/12/02(金) 16:51
(半平太)様
ありがとうございます。
このマクロは最初の10000を超えた時点で"オーバー"のメッセージが表示され、0になりましたが、
次の10000到達時にもメッセージが出るようにできませんか。
Sheet2のA1が10000を超えるたびにメッセージが欲しいです。
申し訳ございませんが宜しくお願い致します。
(tari) 2016/12/02(金) 17:20
’全面差し替え用のコード↓
Function Zclear(rng As Range, Limit As Double) Dim celVals, LastRow As Long, NN As Long, TgtWsh As Worksheet
Set TgtWsh = rng.Worksheet
LastRow = TgtWsh.Cells(TgtWsh.Rows.Count, 1).End(xlUp).Row celVals = TgtWsh.Range("A1:A" & LastRow).Value
If LastRow = 1 Then ReDim celVals(1 To 1, 1 To 1) celVals(1, 1) = rng.Range("A1") End If
For NN = 1 To LastRow If IsNumeric(celVals(NN, 1)) Then Zclear = Zclear + celVals(NN, 1) End If
If Zclear >= Limit Then Zclear = 0 If NN = LastRow Then MsgBox "Limit(" & Limit & ")に到達" End If End If Next End Function
’※ Sheet2のA1セルに入れる数式は同じです。→ =Zclear(Sheet1!A:A,10000)
'多分、実用にはならないでしょうけども・・
(半平太) 2016/12/02(金) 20:55
横から失礼します。
どうも理解力がプアで操作の流れがピンときません。
A行 という表現はエクセルの世界では使いませんね。A列ですね。 まぁ、そんなことは横において。
Sheet2 の A1 の値って、どのように入るのですかね? 数式で、Sheet1 の A列の値を 合計 ? まぁ、そうだとします。
ということは、いつ、このSheet2 の A1 の値が変化するか? Sheet1 の A列に数字を入れたときですよね。 つまり、その時見えているのは Sheet1。
で、その結果、1200 を入れたときに、合計が 10000 を超えるわけですけど あくまで見えているのは Sheet1 ですよね。 でも、その瞬間に何かする? 見えていないSheet2 の A1 の合計が 10000 超えたよというメッセージを Sheet1 が見えている状態で表示しても、操作者はピントこないのでは? かつ、その時に Sheet2 の A1 を 0 にしても 操作者の目には見えない裏側の処理なので、なんか、ピンときません。
まぁ、裏側の Sheet2 のことは操作者が気にしないようにして、あくまで Sheet1 への入力というように とらえれば、それはそれでいいかもしれませんが。 (そうすればそうしたで、じゃぁ、SHeet2 の A1 って 何のためにあって、だれが見るのかな?)
それと、10000 を超えたので 0 にする。でも、Sheet1 に記載済みの 5000 3000 1000 1200 は消さないのですよね。 で、その次に SHeet1の1200の次に4000 と入れた。 この時、SHeet2 の A1 はいくつになりますか?
4000 ですか?
SHeet1 に 1200 と入れたときに Sheet2 の A1 が 0 ではなく、200 になる、 続けて、4000 をいれたら 4200 になるというのなら なんとなく、その数字の持つ意味は、わかるんですが。
(β) 2016/12/02(金) 21:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.