[[20160528231944]] 『1日から31日までのシートを参照する関数』(あん) ページの最後に飛ぶ

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

 

『1日から31日までのシートを参照する関数』(あん)

こんばんは。

ご伝授ください。

現在

=IF(ISERROR(VLOOKUP($A$2,'1日データ'!$A:$AC,3,0)),"",(VLOOKUP($A$2,'1日データ'!$A:$AC,3,0)))

この関数で A2の文字列を元に 1日データsheetの3行目を参照するようにしています。

1日データsheetから31日データsheetまであり、'1日データ'の部分を1日 2日 と手入力で変更して作っているのですが、3行目 4行目 と沢山の参照式をつくらないといけなく大変です。

例えば

A3

=IF(ISERROR(VLOOKUP($A$2,'1日データ'!$A:$AC,3,0)),"",(VLOOKUP($A$2,'1日データ'!$A:$AC,3,0)))

A4

=IF(ISERROR(VLOOKUP($A$2,'2日データ'!$A:$AC,3,0)),"",(VLOOKUP($A$2,'2日データ'!$A:$AC,3,0)))

と作ってオートフィルしたら1日 2日 3日 〜31日 とはならないでしょうか?

なにか良い方法はありませんか?

わかりにくくて申し訳ありません。

< 使用 Excel:Excel2007、使用 OS:WindowsVista >


 こんばんわ。

 A3セル =IF(ISERROR(VLOOKUP($A$2,INDIRECT("'"&ROW(A1)&"日データ'!A:AC"),3,0)),"",VLOOKUP($A$2,INDIRECT("'"&ROW(A1)&"日データ'!A:AC"),3,0))

 下にオートフィル

 でどうでしょうか?

 INDIRECTで記述すると重くなるので、数式を挿入するセル数が多いなら、A:ACとかの列参照では無く、A3:AC1000など範囲を狭めて下さい。

(sy) 2016/05/28(土) 23:39


こんばんわ。

できました!!!

(A1) と入れる理由がわからないのですが何故ですか?

(あん) 2016/05/28(土) 23:53


 ROW関数は引数で与えたセルの行番号を返す関数です。

 引数を空欄にすると関数を挿入したセルの行番号を返します。

 今回は引数にA1セルを与えているので、1行目の行番号の1を返します。

 オートフィルでセル参照はA2、A3となるので、それぞれ2と3を返します。

(sy) 2016/05/28(土) 23:57


 > 3行目を参照するようにしています
 
「3列目」つまりC列ですよね?
 なのになぜ範囲を A:AC にしてるんでしょうか? A:C でいいのでは?
 それともC列以外にも参照する列があるんですか?

 それとエラー処理は2007だったら IFERROR 関数が使えます。

	A	B
1		
2		
3	1日	
4	2日	
5	3日	
	・
	・
33	31日

 ↑ のようにA3:A33に「1日〜31日」を入力しておいた方がわかりやすくないですか?
 オートフィルでできます。

 B3 =IFERROR(VLOOKUP($A$2,INDIRECT("'"&A3&"データ'!A:C"),3,0),"")

 参考まで。
(笑) 2016/05/28(土) 23:59

ありがとうございました

 質問、回答共消されていたので復元。コメントをするときはコメント欄からどうぞ。
(bi) 2016/05/29(日) 07:46

コメント返信:

[ 一覧(最新更新順) ]


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