[[20220917185717]] 『過去ログから:『マクロを使わずにシートの更新日』(マナ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『過去ログから:『マクロを使わずにシートの更新日付をどこかのセル』について』(マナ)

[[20210502133307]] 『マクロを使わずにシートの更新日付をどこかのセル』(あらじぃ) 

今でもときどき、「先週多く参照された上位20件」で見かけるので、
ちょっと考えてみました。

★元スレの質問内容

 課題1:シートごとに、更新日付をセルに表示させる
 課題2:マクロは使用しない

 課題2の理由が
 >xlsmファイルは警告が出るので敬遠される向きがありますので。

★質問者さんの結論

 課題1については、1ファイル1シートで運用する
 課題2については、諦めてマクロを使用する

< 使用 Excel:Excel2016、使用 OS:Windows7 >


どちらも、課題1は解決できませんが、課題2についてのみ

 案1:
  ・別ブック(マクロブック)のセルに、対象ブックの更新日付を、毎日取得
  ・対象ブックでは、別ブックのセルを参照する式を入力しておく
   これなら、対象ブックは、xlsxでよい。

 案2:
  ・Power Queryで、自ブックの更新日付を取得し、セルに読み込む

(マナ) 2022/09/17(土) 19:29


ただし、両案とも今ひとつ
 案1は、更新日付取得のマクロを忘れずに実行できるか?
 案2は、ブックを閉じるときに、変更してなくても保存するか聞いてくる。

(マナ) 2022/09/17(土) 19:54


以上、みやほりんさんのマネをしてみました。

(マナ) 2022/09/17(土) 20:02


閲覧者の参考として。

http://hp.vector.co.jp/authors/VA016119/kitan01.html

板汚しすみませんでした。
(MK) 2022/09/18(日) 00:34


あれ?⬆️ほページはみやほりんさんのページだと
思って紹介したけど勘違いかも。
(MK) 2022/09/18(日) 00:44

 そこで回答していたものの改良版。
 各シートのA1セルにそのシートの更新日を表示する場合。
 =IF(OR(CELL("filename")<>CELL("filename",A1),CELL("address")="$A$1"),A1,NOW())

(ねむねむ) 2022/09/18(日) 10:10


 おっと
 >まず、EXCELのオプションの数式-計算方法の設定で反復計算を行うにチェックを入れ、最大反復回数を1とする。
 これを忘れずに。
(ねむねむ) 2022/09/18(日) 10:11

ねむねむさん、改良版ありがとうございます。

今回の改良版では、ブックを開いた日時になってしまいます。
オプションの設定は、何度も確認しました。
元スレの方法では、うまくいくのですが。
式の意味は、理解できているつもりです(自信ありませんが)。

(マナ) 2022/09/18(日) 11:38


それと、ねむねむさんが、ときどき使われるこの設定

>反復計算を行うにチェックを入れ、最大反復回数を1とする

通常使用で、どんな不都合が考えられるのでしょうか。

(マナ) 2022/09/18(日) 11:43


 式はA1セルに入力しているだろうか?
 あと念のためセルに
 =CELL("address")
 =CELL("filename")
 と入力したらなんと表示されるか確認してほしい。
 なおfilenameのほうは一度保存しないと表示されないはず。

 >通常使用で、どんな不都合が考えられるのでしょうか。
 そのブックで式を入力したときに間違って循環参照の式を入力してしまった場合(通常入力ミス)通常であれば循環参照の
 ダイアログが表示されるがそれが表示されなくなる。
 くらいだと思う。
(ねむねむ) 2022/09/18(日) 11:52

 すまない、勘違いしていた。
 確認時、A1セルにカーソルを置いた状態で保存、読み込みをしていたため気づけなかった。
 やはり前回のように日付表示シートを作っておいて保存時はその日付表示シートを選択しておく、しか思い浮かばない。
(ねむねむ) 2022/09/18(日) 12:00

>確認時、A1セルにカーソルを置いた状態で保存、読み込みをしていたため気づけなかった。

なるほどです。
確認してみて何が起きているか理解しました。

 1)Sheet6に下記式を入力
 A1:=IF(OR(CELL("filename")<>CELL("filename",A1),CELL("address")="$A$1"),A1,NOW())
 A2:=CELL("address")
 A3:=CELL("filename")
 A4:=CELL("filename",A1)

 2)その上で、Sheet6のA5に、1と入力
 A1:2022/9/18 12:47
 A2:$A$5
 A3:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet6
 A4:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet6

 3)その後で、Sheet7のB5に、1と入力し、Sheet6に戻る
 A1:2022/9/18 12:47
 A2:[22020917あらじぃさん.xlsx]Sheet7!$B$5
 A3:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet7
 A4:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet6

 4)そのまま保存して、エクセル閉じる
 5)1分後に、再度ブックを開く
 A1:2022/9/18 12:48
 A2:$A$6
 A3:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet6
 A4:F:\Win10\Documents\エクセルQA\[22020917あらじぃさん.xlsx]Sheet6

(マナ) 2022/09/18(日) 13:00


ご教示ありがとうございます。

 > 通常であれば循環参照の ダイアログが表示されるがそれが表示されなくなる。
 > くらいだと思う。

そういうことであれば、気にならないですね。
今回の改良案が、あと一歩なのはとても残念です。

(マナ) 2022/09/18(日) 13:42


ねむねむさん、もうひとつあまえさせてください。
前回のを、シート名が完全一致のみに対応する式に修正お願いできますか。
 =IF(ISERROR(FIND(A1,CELL("address"))),B1,NOW())

(マナ) 2022/09/18(日) 14:03


 =IF(REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")=A1,NOW(),B1)
 これでパス名に]がなければいいはず。
 ブック名に]があるのもまずいかと思ったがブック名に]がある場合にはCELL関数のほうで)に置き換えているようだ。

 C:\AAAフォルダに保存したBBBブックをフォルダ名をAAA[1]にブック名をBBB[1]に変更(直接EXCELで[]の入ったブック名および[]の入ったフォルダで保存できないため)

 Shee1上にある
 =CELL("filename",A1)
 の結果
 C:\AAA[1]\[BBB(1).xlsx]Sheet1
(ねむねむ) 2022/09/18(日) 19:46

ねむねむさん ありがとうございます。

 意外とシンプルな式ですね。
 でも、自分では組み立てられないのが情けない…

 >ブック名に]がある場合にはCELL関数のほうで)に置き換えている

 貴重な情報ありがとうございます。
 ネットで調べて、後ろから検索する式に変更してみましたが
 自分では、なが〜い式しか。きっと明日には、もう忘れていると思う。
 しかも、2016ではLET使えないし。
  =IF(LET(fp,CELL("filename"),REPLACE(fp,1,FIND("*",SUBSTITUTE(fp,"]","*",LEN(fp)-LEN(SUBSTITUTE(fp,"]","")))),""))=A1,NOW(),B1)

 ところで、Power Queryで、自ブックのパスを取得する際に
 CELL関数を利用する方法があるのですが、)に置き換えられると使えない。

(マナ) 2022/09/18(日) 22:23


 >あれ?⬆️ほページはみやほりんさんのページだと
 >思って紹介したけど勘違いかも。

 そこは芳坂さんのページですね。トップはここ
 https://www.vector.co.jp/vpack/browse/person/an016119.html
(リンクの冒険) 2022/09/20(火) 09:59

みやほりんさんのページ
http://miyahorinn.fc2web.com/frame.html
(x7t) 2022/09/20(火) 10:17

これからは、新関数で

 =IF(TEXTAFTER(CELL("filename"),"]",-1)=A1,NOW(),B1)

 >=IF(LET(fp,CELL("filename"),REPLACE(fp,1,FIND("*",SUBSTITUTE(fp,"]","*",LEN(fp)-LEN(SUBSTITUTE(fp,"]","")))),""))=A1,NOW(),B1)

(マナ) 2022/09/24(土) 21:02


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.