プロが教えるわが家の防犯対策術!

先に本スレッドで下記数式を教わり問題を解決することが出来ました。
  =SUM(INDIRECT("E"&MATCH("AAA",A:A,0)&":"&"E"&MATCH("AAA",C:C,0)))
ただ、このINDIRECT関数により、ブックに変更がなくても終了時にブックの保存の要否が尋ねられます。
これを回避するためにINDIRECT関数の使用を止めたいのですが、その方法をお教えいただきたくお願いします。

A 回答 (6件)

ちょっと気になったので一言だけ。


別の人がこのシートを使って試算をしたとします。保存しなければいいやと思ってバッテンをクリックしたら「保存しますか」のメッセージが出ずに、いきなり保存されてしまいました。ってことのなりませんか。
ここは作業列を作ってシンプルな式で対応した方が安全な気がします。
    • good
    • 0
この回答へのお礼

今晩は、回答ありがとうございます。

ご指摘の点については、当方もそれ恐れていて、まだ良いアイデアをご教示頂けるのではないかと本スレッドを閉めないでいました。
やっぱり、作業列を使った正攻法が正解のようですネ。

お礼日時:2018/12/27 23:53

No.4の回答者です。



Excel2013 で試してみました。INDEX関数を含めて、試してみましたが、

「○○(ファイル名)の変更内容を保存しますか?」

は、どれでも出てしまいます。INDEX関数は、単独なら、メッセージは出ませんが、SUM関数の中に入れてしまうと、終了時にメーセージが出てしまいます。

ですから、その表示を止めたいのでしたら、ThisWorkbook モジュールに、メッセージが出ないように登録しなければならないです。

'//ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Saved = False Then
  ThisWorkbook.Save
End If
End Sub
    • good
    • 0
この回答へのお礼

今晩は。

当方、Excel 2016ですが、教えて頂きましたINDIRECT関数を使用しない下記式でも、ブックに変更がなくても、Excelの終了時にブックの保存が必要かどうか尋ねられますね。
 =SUM(INDEX(A1:E5000,MATCH("2018*",A:A,0)+2,5):INDEX(A1:E5000,MATCH("2018*",C:C,0)-1,5))

教えて頂きましたイベントプロシージャで同じように対処したいと思います。

先の質問から度々サポート頂き助かっています。ありがとうございます。

お礼日時:2018/12/26 21:28

>このINDIRECT関数により、ブックに変更がなくても終了時にブックの保存の要否が尋ねられます。


これが、『揮発性関数』の特徴です。前回、書いた内容で一つ訂正
値をその関数の中で確保できないからです。

>このどちら(OFFSET, INDEX)も不揮発性関数です。
OFFSET 関数は、揮発性でした。

Microsoft の記事
//NOW,TODAY,RANDBETWEEN,OFFSET,INDIRECT,
INFO (引数によって異なります) CELL (引数によって異なります),SUMIF (引数によって異なります)//
https://docs.microsoft.com/ja-jp/office/client-d …

ということで、使えるものは、INDEX 関数になります。ただし、バージョンに依存性があります。昔は、INDEX関数も、揮発性だったけれども、どこかのバージョンでかわったわけで、上記の記事ですと、EXCEL 2013になっています。

F2 =MATCH("AAA",A:A,0)
F3 =MATCH("ZZZ",C:C,0)

=SUM(INDEX(A1:D100,F2,4):INDEX(A1:D100,F3,4))

前回の私の書き込みを御覧ください。
    • good
    • 0

こんばんは!



1行目が項目行で、データが2行目以降にある!というコトであれば・・・
=SUM(OFFSET(E1,,,MATCH("AAA",C:C,0)))-SUM(OFFSET(E1,,,MATCH("AAA",A:A,0)-1))
または
=SUM(OFFSET(E1,MATCH("AAA",A:A,0)-1,,MATCH("AAA",C:C,0)-(MATCH("AAA",A:A,0)-1)))

ではどうでしょうか?

※ C列の「AAA」の方がA列の「AAA」の行以降にあるという前提です。
(C列の方がA列より早く出現すると「0」またはエラーになります)

細かい検証はしていませんので
お望みどおりにならなかったらごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

今晩は、回答ありがとうございます。

INDIRECT関数の使用を回避する目的は、ブックに変更がなくてもブックを保存がするかどうか尋ねられるのを避けるためです。
従いまして、OFFSET関数はINDIRECT関数と同様に揮発性のため、残念ながら解決にはならないですね。

お礼日時:2018/12/26 21:40

あぁ、失礼、


使い方解説を 逃しましたね。


OFFSET構文、
http://officetanaka.net/excel/function/function/ …

INDEX構文、
https://support.office.com/ja-jp/article/index-% …

https://www.forguncy.com/blog/20170113_index_match


後で、時間あったら
もっと 検討してみますが。
    • good
    • 0
この回答へのお礼

今晩は、回答ありがとうございます。
更なる検討をお願いします。

お礼日時:2018/12/26 21:42

どうだろう?



私なら、
OFFSET構文や、INDEX構文を、
使うけど。
    • good
    • 0
この回答へのお礼

今晩は、回答ありがとうございます。
OFFSET関数はINDIRECT関数と同じ揮発性のため、INDEX関数の使用をを検討したいと思います。

お礼日時:2018/12/26 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A