[[20210802150153]] 『関数内のシート名を自動で変更したい』(よしあき) ページの最後に飛ぶ

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

 

『関数内のシート名を自動で変更したい』(よしあき)

『1月』〜『12月』と『チェック』というシート(計13シート)があります。

現在『チェック』内のセル[A1]には数式【=TODAY()】が、[C15]には=数式【'8月'!$D$35】が入っています。
この[C15]の数式内のシート名部分('8月')を[A1]の日付を反映させた物(例:MONTH(A1)&"月")にしたいのですが関数でのシート名の自動変更は可能でしょうか?

過去の質問の [20021211002659]『シート名を数式に組みこむ』 が同じ質問のような気もしますが、理解できなかったので自分が実際に使うシート名とセル番号を記載した物を使っての説明をお願い致します。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


文字列をセル番号として扱うことのできるINDIRECT関数を使うとできます。
(砂糖) 2021/08/02(月) 15:25

>関数でのシート名の自動変更は可能でしょうか?
不可です。
シート名の自動変更はVBA(マクロ)意外にはありません!
(たて) 2021/08/02(月) 16:39

砂糖様、たて様、返信ありがとうございます。

シート名自体ではなく数式【'8月'!$D$35】の'8月'を自動変更したいです。

マクロを使うならどのようにすればいいでしょうか?

お手数をおかけして申し訳ありませんが具体的な式を記載していただければと思います。
(よしあき) 2021/08/02(月) 16:47


 C15がどんな式なのか知りませんけど
 >'8月'!$D$35
 この部分を

 INDIRECT(MONTH(A1)&"月!D35")
 とか
 INDIRECT(TEXT(A1,"m月")&"!D35")
 とか

 これでできませんか?

 以上
(笑) 2021/08/02(月) 17:07

ぶつかりましたがそのまま。

>具体的な式を記載していただければと思います。

もう、使う関数の答えは砂糖さんから出てますよ。
関数の説明はここでするより、ネット上で詳しく解説されているので、
そちらがいいですよ。

簡単に解説するとINDIRECT関数で'8月'!$D$35の値を取得するだけ。
TODAY()から月を取得するのは、MONTH関数です。

どんな説明が欲しいんですか?
(笑)さんにありがとうございます、で終わるんですかね?

(tkit) 2021/08/02(月) 17:10


 C15の式って ↓ だけ?
 ='8月'!$D$35

 何のために絶対参照にしてるんですか?

 以上、確認だけ
(笑) 2021/08/02(月) 17:23

(笑)様

具体的な式を提示して下さりありがとうございました。
どちらの式でも思う物が出来ました。
絶対参照って『!』がついてることですよね?
これはどのシートもここのセルだから『!』をつけました。
この度はこちらの要望も上手く伝えられなかったにも拘わらず丁寧に教えて下さり本当にありがとうございました。

(tkit)様

関数を教えて貰ってその関数がどういうものかは調べたのですがいまいち理解できず、どこに入れるのかとかがわからなかったのでこちらで更に質問をしてしまいました。
皆様にはご不快な思いをさせてしまいましたことをお詫び致します。

(よしあき) 2021/08/03(火) 08:39


>絶対参照って『!』がついてることですよね?
絶対参照ということ語を知らないらないとはいかがなものかと。

(なさけない) 2021/08/03(火) 08:47


(tkit)様、(なさけない)様

すみません!絶対参照は『$』でしたね!
現場作業だけでなく最近は見積書や請求書なんかも作るようになってエクセルにも簡単なものなら関数も慣れてきたつもりでいましたが言葉は全然わかってませんでした。
これから調べたものの意味や言葉も覚えるようにします。
みなさま本当にありがとうございました。
(よしあき) 2021/08/03(火) 09:03


>理解できなかったので自分が実際に使うシート名とセル番号を記載した物を使っての説明をお願い致します。

理解できないものが、理解できたんですか?
結局、動く数式もらって、ありがとう、じゃないですか。
折角、「説明を求めて」質問したんだから、自身で調べて分からないことを聞けばいいじゃないですか。
もったいないなぁ、と思いました。
(tkit) 2021/08/03(火) 09:11


 >結局、動く数式もらって、ありがとう、じゃないですか。
 なんか当方の回答に「強烈な不満」を抱いておられるようですね。

 質問者さんへ
 要するにC15の元の式は ='8月'!$D$35 だけってこと?

 >どのシートもここのセルだから
 絶対参照にするのは他のセルにコピーしても「D35」のままにしておくため。
 他のセルにコピーしないんだったら絶対参照にする必要はありませんよ。

 ■以下、参考まで
 C15が相対参照の ='8月'!D35
 この式を下にコピーし、C16はD36、C17はD37、C18はD38・・・を表示させるとき
 シート名を可変にしたいのなら

 C15 =INDIRECT(MONTH($A$1)&"月!D"&ROW(D35))
 または
 C15 =INDIRECT(TEXT($A$1,"m月")&"!D"&ROW(D35))
 下コピー

 こんな感じ
(笑) 2021/08/03(火) 10:14

 >なんか当方の回答に「強烈な不満」を抱いておられるようですね。

 いやいや、(笑)さんには、そんなことは無いですよ。

 引っ掛かったのは、「具体的な数式を提示して*説明が欲しい*」、という質問だったからです。
 その割に、検索しても分からない、とのこと、数式ゲットで
 「どちらの式でも思う物が出来ました。」で終わっているので腑に落ちませんでした。
 で、折角質問したんだから、分からない事を教えてもらえばいいのに、と思った次第でございます。
 こちらは何が分からないか分かりませんからね。

 質問者さんへ
 一応数式はこんな感じでした。
 =MONTH($A$1) この数式で 8 が取得出来ます。(今現在)
 =MONTH($A$1)&"月!$D$35" で 8と"月!$D$35"を文字列結合します。
 =INDIRECT(MONTH($A$1)&"月!$D$35") で文字列で指定したセルの値を取得出来ます。

(tkit) 2021/08/03(火) 11:20


 >=INDIRECT(MONTH($A$1)&"月!$D$35")
 A1を絶対参照にしてるってことは、この式を他のセルにコピーすることを想定してるんですか?
 他のセルにコピーしても、すべて8月シートのD35セルですよね。

 コピーしないんだったら、すでに回答したように
 ↓ でいいと思います。
 =INDIRECT(MONTH(A1)&"月!D35")

 ちなみに
 >&"月!$D$35")
 この「$D$35」は文字列なので、単に「D35」として他のセルにコピーしても
「D35」は変化しません。

 それはそれとして、他のセルにコピーするんだったら、どのセルにコピーして
 どういう結果を期待しているのかを書いてもらわないと回答できませんよ。

 以上
(笑) 2021/08/03(火) 12:00

 回答に不満がある訳でなく、質問者さんのスタンスに対し不満があっただけです。
 動いてよかったよかった、なら、説明をお願い致します。なんて書かなきゃいいのにと
 思った次第です。
 ご気分を害されたのであれば、誠に申し訳ございません。

(tkit) 2021/08/03(火) 17:15


コメント返信:

[ 一覧(最新更新順) ]


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