[[20260908115024]] 『INDIRECT関数の日付認識について』(ひさちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『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 >


=INDIRECT(TEXT(A1,"m""月""")&"!A1",1)
といった書き方が参考になるのでは?

(参考) 2026/09/08(火) 15:06:19


コメントありがとうございます。
これは、そもそもINDIRECT関数の参考でしょうか?
=INDIRECT(TEXT(A1,"m""月""")&"!A1",1)のA1とは…なんでしょうか

(ひさちゃん) 2026/09/08(火) 15:27:24


 > こういう場合は、INDIRECT関数は適当ではないでしょうか。

集計シートのたとえば 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


INDIRECT関数を使おうが使わまいが、VLOOUPU関数を使っての表示は不可能だよ。

(茶々) 2026/09/08(火) 15:48:54


 > この集計されたデータを、別のシートセル(例えば4月データ)に表示させる
 つまり、各月のシートに、集計シートのデータを引っ張ってくるんですね?
 (例えば、4月シートに、集計シートを介して5月のデータを持ってくるといったことですか?)
 書かれたとおり解釈しましたが、もし出発点が違っていたら修正してください。

 ・各月シートのキー項目は日付型データ
 ・集計シートのキー項目(A列)は 文字列データ
 ということなら、単に、
 VLOOKUP関数の第一引数を、日付型から文字列に変換したものを入れることによって、
 どちらもキー項目を文字列に統一したうえで、VLOOKUP関数を使えばよいでしょう。
 (変換は、(参考)さんのコメントにあるTEXT関数を使用します。)

 また、参照先は集計シートと決まっているなら、そもそもINDIRECT関数は不要ですよね。
 また^2、集計シートのB5セル、C5セルの式は、質問には直接関係しないんですね?

(xyz) 2026/09/08(火) 20:09:43


>4月データシートは日付データになっているので、
シート名ですよね。日付はどの様にして入力していますか。
(わからん) 2026/09/08(火) 21:40:53

 おそらくですが 集計シートの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


>(現状を説明する為に言及しただけ)。
いちゃもん付けているのかよ。
だったらそれ相当の回答したらどうなんだ。
(参考2) 2026/09/10(木) 17:31:42

 いちゃもん? って何ですか?

 xyzさんが回答しているでしょう。
 読まなかったんですか?

(半平太) 2026/09/10(木) 17:44:36


>いちゃもん? って何ですか?
AIに聞いてみな。
>読まなかったんですか?
読みましたよ。

難癖付ける奴だな。

(参考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


コメント返信:

[ 一覧(最新更新順) ]


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