[[20210906170828]] 『vlookup エラー』(まる) ページの最後に飛ぶ

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

 

『vlookup エラー』(まる)

いつもお世話になります。
教えて欲しいことがあります。
よろしくお願いいたします。

Excelで出勤表を管理しています。
各月でシートが分かれています。
2021.1〜人ごとの各月公休日を合計したいと思っています。
その際に、Vlookup関数を使い集計集計をしたのですが、
2021.1には在籍していない人(2月から在籍など)がいて、エラーになってしまいます。

その際に、在籍していない月を無視して在籍している月から合計することはできますか?
数式は、vlookupで各月分を求めて+でvlookup関数をつなげています。

よろしくお願いいたします。

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


 理解力が無いので間違っていたらすみませんが
 エラー表示するなら各VLOOKUPの式をIFERROR関数でくくって0を入力すればどうでしょうか
 出来るかは試していないのでわかりませんが
 もっとスマートな回答があると思いますのでとりあえず
(なるへそ) 2021/09/06(月) 18:06

なるへそ 様
ご回答ありがとうございます。

0にするのではなく、エラーになる月を無視して
在籍している月の分だけ合計したいです...
エラーを無視することはできないのでしょうか;;

一旦在籍していない月分の式を消して、
合計を出すようにしていますが、
新しい人が入社されたときに
いいやり方があればなと思いまして...
(まる) 2021/09/07(火) 10:19


 私もよくわかっていませんが、AGGREGATTE関数を使えばエラーを無視することができます。
 レイアウトが分からないので式の提示はできませんが。
https://www.tipsfound.com/excel/04aggregate
(*) 2021/09/07(火) 10:42

 レイアウトが理解できなかったので
 VLOOKUPを一つずつちまちま足して一度で表示しているのだと思い
 エラーを0にすれば式を消さなくても足し算には反映しないかなと回答しました
 そうすればコピペもし易くなるかなと

 作業シートを作成してVLOOKUPで表示している値を1セルずつに分けて表を作成しておき
 *さんのおっしゃっている様にAGGREGATTE関数でエラーを無視してSUMすればよいのでは
 表にしないとダメなのかは知りませんが
(なるへそ) 2021/09/07(火) 10:59

横からすみません。
いまどのような計算式を使われているのか、
レイアウトとともに具体的に示すことはできませんか?
すでにある提案がぴったりのものであっても、
今のままだと、あなたも回答コメントを理解できないんじゃないですか?

(γ) 2021/09/07(火) 11:27


 >エラーになる月を無視して在籍している月の分だけ合計したいです

 =IFERROR(VLOOKUP(……),0)
 これでエラーの月は「0」になる → エラーの月を無視することになるのでは?

 または、SUMIF なら名前がなくてもエラーにはならず「0」になります。

 そういうことだとして
 =IFERROR(VLOOKUP(……),0)+IFERROR(VLOOKUP(……),0)+ ……
 =SUMIF(……)+SUMIF(……)+ ……

 1年分ならこれを12個つなげるってこと?
 そのやり方を見直した方がいいのでは?

 以上
(笑) 2021/09/07(火) 12:17

さん なるへそさん γさん

すみません、レイアウトが下記になります。

A列に従業員の名前 B列に公休日合計(今月であれば1〜9月分)です。
他のシートに全社員分のシフト表があります。
シートごとに月の公休日が計算してありますので、
各月の集計を1年分足したいです。
(シートは 2021年1月〜9月で現在9シート有ります)

B列の公休日合計には
vlookup(A1,1月シートの範囲,数字)+2月分〜という感じで式が入っています。
1月から在籍している社員については上記の式で
計算されますが、在籍していない期間がある社員は
エラーになります。
そのエラー月を無視して、在籍している期間だけの
日数を合計することはできますでしょうか。
例えば、3月に入社した人であれば1.2月分の月を無視して4〜9月分を合計です。

A列の従業員名は9月現在在籍してる社員のものになります。

すみません、よろしくお願いいたします。

(まる) 2021/09/07(火) 14:05


 レイアウトとは1月から9月までのシートのどこに何を表示しているかの表みたいなものになります
 また出力のレイアウトも同じです
 まあ、最初の説明よりは理解し易くはなったとは思いますが

 今あるVLOOKUPの式を活用するなら
 VLOOKUPではエラー回避できないのでγさんや私が最初に言った様にVLOOKUPの式を12月分まで1つずつ
 IFERROR関数で囲ってエラーの月は0になるようにして足し算から除外する形になると思います

 12か月分つなげるとかなりの長さの式になりますね(可読は作った人ならしやすいかな)

 12か月分の公休日まとめ表シートは作れないってことですかね

 1行目には下記の様にタイトルを付け(1月とか2月って書いているところはシート名と同じにすると
 VLOOKUPの表範囲をINDIRECT関数などで呼び出し易いし各シートの公休日記載個所にタイトルがあるなら
 2行目にタイトル名(全て同じ?)にしておけばMATCH関数などで列を呼び出し易くなるので
 フィルコピー表を作成し易くなると思うのですが)
 氏名 |  1月 | 2月 |  3月 |  〜

 如何せんスマートではないと思いますので取り敢えず出来たら良いかなでないなら他の方の回答を
(なるへそ) 2021/09/07(火) 15:58

 既に皆さんからコメントいただいたとおりです。

 月別一覧表を下記のように作ってはどうですか?
 実用上も各月の取得状況を一覧できるものは不可欠と思われる。

 "公休日"とは"有給休暇"のことですかね。
 ・在籍して取得していない場合は   0
 ・在籍していない場合は          "-"   (バー)
 と区別したほうがいいのでは?

     (下記は5月末の段階としました。dさんは、4月入社。)
 	A列	B	C	D	E	F	G	H	I	J	K	L	M	N
 1行	氏名	1月	2月	3月	4月	5月	6月	7月	8月	9月	10月	11月	12月	年合計
 2	a	1	2	1	1	1	-	-	-	-	-	-	-	 6
 3	b	4	2	1	1	1	-	-	-	-	-	-	-	 9
 4	c	3	5	0	1	1	-	-	-	-	-	-	-	10
 5	d	-	-	-	1	1	-	-	-	-	-	-	-	 2

 (1)
 B2セル  =IFERROR(VLOOKUP($A2,INDIRECT("'"&B$1&"'!$A$1:$B$100"),2,FALSE),"-")
 M列までコピー
 ・VLOOKUPする対象セル範囲、列位置は調整してください。
 (・INDEXとMATCHを組みあわせたほうがいいかもしれない。)
 (2)
 N2セル  =SUM(B2:M2)
 ("-"は自動で対象外になります。)
 下にコピー。

(γ) 2021/09/07(火) 23:06


お返事が遅くなりました。
皆様ありがとうございました。
(まる) 2021/09/08(水) 13:56

何か浮かぬ感じを受けますね。
お役に立ちましたか、どのように対応する予定ですか?
まあ、時間をかけて検討されたらよいと思いますが。

なお、不明点があれば質問されたほうがいいですよ。
あいまいなままにしておくことは、双方にとって不幸なことですから。
(γ) 2021/09/08(水) 14:11


コメント返信:

[ 一覧(最新更新順) ]


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