『INDIRECT関数の日付認識について』(ひさちゃん)
今現在は、各シート(月別)の同じセル番号の数字を『集計』シートに表示させています
この集計されたデータを、別のシートセル(例えば4月データ)に表示させるためキーとなるのがA列で、その際表示させたいシートのキーは見かけ上4月となっていますが日付(2026/4/1)という書式でデータ保持しています。
※他のデータの識別用に日付データで保持しています。
そうなると、下記データのA列は文字列の4月、4月データシートは日付データになっているので、VLOOUPU関数を使っての表示は不可能になってきます。
こういう場合は、INDIRECT関数は適当ではないでしょうか。
■集計シート
【A】 【B】 【C】
1
2 [月別売上実績]
3 月 件数 売上
4 3月 9 9,062,960
5 4月 6 4,971,510
6 5月 4 6,389,800
7 6月 10 17,540,341
8 7月 8 26,541,328
9 8月 6 1,484,482
10 9月 1 50,000
11 10月
12 11月
13 12月
14 1月
15 2月
4月(B5セル)の関数はこんな感じです。
=IF(ISERROR(INDIRECT($A5&"!J67",1)),"",INDIRECT($A5&"!J67",1))
4月(C5セル)の関数はこんな感じです。
=@IF(ISERROR(@INDIRECT($A5&"!K67",1)),"",INDIRECT($A5&"!K67",1))
もうこれは、集計シートにセル挿入などをして、4月データシート(VLOOUPU関数用に)日付データを作成するとかしかないでしょうか?
説明が分かりにくかったら大変申し訳ないですが、
アドバイスいただけないでしょうか。
よろしくお願いします。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
(参考) 2026/09/08(火) 15:06:19
(ひさちゃん) 2026/09/08(火) 15:27:24
集計シートのたとえば A5 が「4月」という文字列で、「4月」という名前のシートの値を参照するのだから、INDIRECT は必須でしょう。
ただ、
=IF(ISERROR(INDIRECT($A5&"!J67",1)),"",INDIRECT($A5&"!J67",1))
は冗長で、
=IFERROR(INDIRECT($A5&"!J67",1),"")
でよいかと。
(4xmy) 2026/09/08(火) 15:32:38
(茶々) 2026/09/08(火) 15:48:54
> この集計されたデータを、別のシートセル(例えば4月データ)に表示させる つまり、各月のシートに、集計シートのデータを引っ張ってくるんですね? (例えば、4月シートに、集計シートを介して5月のデータを持ってくるといったことですか?) 書かれたとおり解釈しましたが、もし出発点が違っていたら修正してください。
・各月シートのキー項目は日付型データ ・集計シートのキー項目(A列)は 文字列データ ということなら、単に、 VLOOKUP関数の第一引数を、日付型から文字列に変換したものを入れることによって、 どちらもキー項目を文字列に統一したうえで、VLOOKUP関数を使えばよいでしょう。 (変換は、(参考)さんのコメントにあるTEXT関数を使用します。)
また、参照先は集計シートと決まっているなら、そもそもINDIRECT関数は不要ですよね。 また^2、集計シートのB5セル、C5セルの式は、質問には直接関係しないんですね?
(xyz) 2026/09/08(火) 20:09:43
おそらくですが 集計シートのA列が日付(キーと言ってるもの) 各月のシートの名前がテキスト 各シートのJ67:K67にほしい値
>=INDIRECT(TEXT(A1,"m""月""")&"!A1",1)のA1とは…なんでしょうか =INDIRECT(TEXT(A3,"m""月""")&"!J67:K67",1) がおそらくほしいもの
=VStack('1月:12月'!J67:K67) でもいいかもしれない
(ちくわ) 2026/09/08(火) 22:37:13
通じなかったですか?
> VLOOKUP関数の第一引数を、日付型から文字列に変換したものを入れることによって、 > どちらもキー項目を文字列に統一したうえで、VLOOKUP関数を使えばよいでしょう。
別のシートの集計値を表示したいセルに =IFERROR(VLOOKUP(TEXT(検索値のセル,"m""月"""), 集計シート!$A$4:$C$15, 2(または3), False),"") とします。 "検索値のセル"とは、日付型のデータが入ったセルのことです。
# INDIRECTの使用と、VLOOKUP関数の検索成否は直接の関係はありません。 # 後者は、検索値と検索されるデータの型が一致していることがポイントです。 (xyz) 2026/09/09(水) 20:24:43
```> その際表示させたいシートのキーは見かけ上4月となっていますが日付(2026/4/1)という書式でデータ保持しています。 ※他のデータの識別用に日付データで保持しています。 そうなると、下記データのA列は文字列の4月、4月データシートは日付データになっているので、 VLOOUPU関数を 使っての表示は不可能になってきます。 ``` 見落としてました 集計シートの A列は文字列ですね 忘れてください シートタイトルには数値を入れられないので 日付データ云々は 4月のシート内の何らかのセルの値ということでしょうかね
若しくは4月のシート名が 2026/4/1 とか? でもキーって言っているけど >4月(B5セル)の関数はこんな感じです。 >=IF(ISERROR(INDIRECT($A5&"!J67",1)),"",INDIRECT($A5&"!J67",1)) ではシートの1セルしか見てないし ????
私の読解力では読み切れませんでした。無念 (ちくわ) 2026/09/10(木) 13:29:48
参考です。
A列の日付はユーザー定義で「m"月"」としています。
集計シート
|[A] |[B] |[C]
[1]| | |
[2]|[月別売上実績]| |
[3]|月 |件数|売上
[4]|3月 | 9|9,062,960
[5]|4月 | 6|4,971,510
[6]|5月 | 4|6,389,800
[7]|6月 | |
[8]|7月 | |
[9]| | |
B4=IF(INDIRECT(TEXT(A4,"m月") & "!j67")="","",INDIRECT(TEXT(A4,"m月") & "!j67"))
C4=IF(INDIRECT(TEXT(A4,"m月") & "!k67")="","",INDIRECT(TEXT(A4,"m月") & "!k67"))
シート名 3月
|[I]|[J]|[K] |[L]
[66]| | | |
[67]| | 9|9,062,960|
[68]| | | |
シート名 4月
|[I]|[J]|[K] |[L]
[66]| | | |
[67]| | 6|4,971,510|
[68]| | | |
シート名 5月
|[I]|[J]|[K] |[L]
[66]| | | |
[67]| | 6|4,971,510|
[68]| | | |
(参考2) 2026/09/10(木) 15:29:43
関連シートは3種類あると言うことなんでしょうね。
1.各シート(月別) 2.集計シート 3.別のシート(例えば4月データ)
質問は、「別のシートセル(例えば4月データ)」に、「集計シートのデータ」をVlookup関数で検索すること。
なので「集計シート」に書くべき数式の話ではないし(既に質問者自身がINDIRECT関数を使って解決している)、 「各シート(月別)」は、殆ど質問とは関係ない(現状を説明する為に言及しただけ)。
(半平太) 2026/09/10(木) 17:12:42
いちゃもん? って何ですか?
xyzさんが回答しているでしょう。 読まなかったんですか?
(半平太) 2026/09/10(木) 17:44:36
難癖付ける奴だな。
(参考2) 2026/09/10(木) 20:36:01
半平太さんのコメントは多分私の読解力への解説なので 参考2さんへのいちゃもんではないとと思いますよ
各シート (月別) 『集計』シート 月別データシート ってことですね読めてませんでした。
indirectでセルに出した値を再度参照できるのか? っていう質問だったってことですね。
スレ汚すだけなのは悪いので xyzさんの回答を表に
シート名:4月
| [J]| [K]|
[67]| 6| 4,971,510|
シート名:集計
| [A]| [B]| [C]|
[5]| 4月| 6|4,971,510|
B5=IF(ISERROR(INDIRECT($A5&"!J67",1)),"",INDIRECT($A5&"!J67",1)) C5=(略)
シート名: 4月データ
| [A]| [B]| [C]|
[5]| 2026/4/1| 6|4,971,510|
B5=IFERROR(VLOOKUP(TEXT(A5,"m月"), 集計!$A$4:$C$15, 2, False),"") C5=IFERROR(VLOOKUP(TEXT(A5,"m月"), 集計!$A$4:$C$15, 3, False),"")
(ちくわ) 2026/09/10(木) 22:17:55
>半平太さんのコメントは多分私の読解力への解説なので
そう単純でもないです。一般的な注意喚起の意味もありますし、 質問者さんが、趣旨の違う回答群に振り回されないようにする為でもあります。
そもそも私自身、xyzさんとちくわさんの遣り取りを見て、 初めから読み返し、xyzさんの見解に成程と思ったレベルです。
質問者さんの最終的な判定を待ちたいです。
(半平太) 2026/09/11(金) 09:05:10
>質問者さんの最終的な判定を待ちたいです。 私も待っています。 (xyz) 2026/09/18(金) 15:33:16
回答コメントしたのですが、何か気に入らないことでもあるんでしょうか? 失礼じゃないですか?返事くらいするのが常識ある人の態度だと思います。 (xyz) 2026/09/19(土) 18:30:55
遅ればせながらのコメントで失礼します。
》 A列で、…見かけ上4月となっていますが日付(2026/4/1)という書式でデータ保持しています。
ということは、
セル A4、A5 の実体はそれぞれ、2026/3/1、2026/4/1 で書式は m"月" に設定されている
ということですね?そして、範囲 A4:A5 を下方に 15行目までオートフィルされたのが[集計シート]の A列の「見かけ上」の姿であると?
確認願います。
(Mike) 2026/09/20(日) 18:02:07
Mikeさん、質問者ではありませんが、コメントさせていただきます。 別の意図を持ってあえて質問されているのかもしれませんが、 今まで回答をしてきた者として心穏やかではありません。
他の人の発言を読まれたうえでの確認質問なのでしょうか。 そして議論の流れのようなものを理解されているのでしょうか。 >質問者さんが、趣旨の違う回答群に振り回されないようにする為でもあります。 という配慮が活かされていませんね。
質問者さんに確認する時期は過ぎていると思います。 ・集計シートのA列は、日付データではなく文字列、と質問者さんが冒頭でハッキリ記載されています。 ・また文字列でなければ、INDIRECT関数を使ったシート指定の式が機能しません。 そこは前提なんです。
集計表の月別合計値を別のシートからVLOOKUP関数で取得したいのだが、 その検索値が日付型データなので、どうしたらいいですか、というのが質問と理解しています。 それなら、検索値をText関数で文字列に変換してから、VLOOKUP関数の第一引数に指定すればいい、 というのが回答です。具体的な式も既に書いています。 (ちくわ)さんからも式が明確に示されています。
そうした指摘は回答者さんから既にされているのに、 明後日の方向の確認を今さらされますか。 失礼ながら、全体の議論を理解されたほうがよいと思います。
(xyz) 2026/09/20(日) 20:56:53
どなたの仕業か知りませんが、他人の発言を物理的に消すなんて酷いですね。 私が自ら消したと思われるのもシャクなので、復旧しておきます。
さて、 最近こちらに参加された質問者さんは、相手が生成AIとでも勘違いしていて、 自分だけ情報が得られればよいとでも思っているのでしょうか。
質問掲示板と言うのは、質問者、回答者が互いに会話(情報交換)を行い、 結果がどうなったかを含め閲覧者にも参考になるように、というものです。 ですから、結果をきちんと書いていただきたいのです。 また、不明のところがあれば、遠慮なく追加質問をしてください。
(xyz) 2026/09/22(火) 10:37:15
=$A5&"!K67"
20年ぐらい前から触ってるらしいので終わってる感が
[[20050824113412]]
(横着) 2026/09/24(木) 05:17:14
他人の発言を勝手に削除する行為を黙っているわけにはいきません。 もう二度目ですよね。(2026/09/22(火) 16:23分に削除した模様) 再び消されるようなことがあれば、 今後の発言の制約を検討いただくよう管理人さんに報告します。
ちなみに、既に指摘がありますように
・集計シートのA列は文字列です。(最初の質問に明記されています。)
・集計シートの変更を求めているのではありません。
それはそれで合計値が取得出来ているのです。
・他のシートから、集計シートの数値をVLOOKUP関数で取得する方法が
質問事項です。
(もちろん、集計シートの持ち方を変更する手段もありますが、
それは前提として議論してきています。)
何度書いても通じないのですね。
(xyz) 2026/09/24(木) 08:45:28
いやそうではないというのなら今後回答しないでほしい。
(閲覧者) 2026/09/24(木) 09:31:20
迅速に、しかも端的にコメントありがとうございました。
皆様にいろいろコメントやアドバイス、ご指摘頂いた結果、私が求めていた答えは
=INDIRECT(TEXT(A1,"m""月""")&"!A1",1)
この関数が大変参考になりました。
(4xmy)様
ご指摘ありがとうございます。
>=IFERROR(INDIRECT($A5&"!J67",1),"")
ほんとですね。私が表示していた関数より、簡潔で値を求めることが出来ますね。
(xyz)様
私の説明文が分かりにくくて申し訳ございませんでした。
ご推察された通り…下記のとおりです。
>> この集計されたデータを、別のシートセル(例えば4月データ)に表示させる >つまり、各月のシートに、集計シートのデータを引っ張ってくるんですね? >(例えば、4月シートに、集計シートを介して5月のデータを持ってくるといったことですか?)
>・各月シートのキー項目は日付型データ >・集計シートのキー項目(A列)は 文字列データ
ちくわ 様
=INDIRECT(TEXT(A3,"m""月""")&"!J67:K67",1) がおそらくほしいもの
試してみた結果、これに該当しました。
読み取っていただきありがとうございます。
説明文が分かりにくくて申し訳ございませんでした。
(参考2)様
表の書き出しありがとうございます。
その通りです。
こういった分かり易い質問の書き出し方がうまくできずでみなさん混乱させてしまったようですし、大変たすかりました。
(横着)様
20年ぐらい前から触ってるらしいので終わってる感が
[[20050824113412]]
は私ではありません
名前は同じですね…
結果的に、私が知りたかった内容は
ちくわ様がまとめてくださった下記内容が全てです。
INDIRECTであっても、VLOOKUPであっても TAXT関数を組み合わせることで
結論付けることが出来ることが勉強になりました。
シート名:4月
| [J]| [K]|
[67]| 6| 4,971,510|
シート名:集計
| [A]| [B]| [C]|
[5]| 4月| 6|4,971,510|
B5=IF(ISERROR(INDIRECT($A5&"!J67",1)),"",INDIRECT($A5&"!J67",1)) C5=(略)
シート名: 4月データ
| [A]| [B]| [C]|
[5]| 2026/4/1| 6|4,971,510|
B5=IFERROR(VLOOKUP(TEXT(A5,"m月"), 集計!$A$4:$C$15, 2, False),"") C5=IFERROR(VLOOKUP(TEXT(A5,"m月"), 集計!$A$4:$C$15, 3, False),"")
この度は、わたくしが質問した後に、町の水害及びインフルエンザ感染と…再難続きで皆様のコメントに
迅速に反応することが出来ずとなり、不快感を与えてしまいました。
大変申し訳ございませんでした。
このように質問者からの反応が無い中でも、真摯にコメントくださり、心より感謝いたします。
ありがとうございました。
(ひさちゃん) 2026/09/24(木) 17:15:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.