[[20181016101929]] 『最新受講日を表示させたい』(ひーろ) ページの最後に飛ぶ

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

 

『最新受講日を表示させたい』(ひーろ)

お忙しい処、すいません。教えて下さい。

受講日の最新日を表示させたいのですが、上手く出来ません。
何が、間違っているのでしょうか?
  
   G        H        I       J       K      L

1 最新受講日  5/30受講  6/13受講  7/11受講 8/2受講 9/5受講

2 5/30       〇

3 6/13                 〇

4 9/5        〇          〇                  〇

5 7/11       〇                〇
 
↑のような、表です。

=INDEX(INDIRECT("H1:L1"),MATCH("○",INDIRECT("H"&ROW(2:2)&":L"&ROW(2:2)),0))
この関数を入れても、正しい最新受講日が表示されません。
関数は、どなたかの過去ログを参考にしました。

どこが、間違っているのか、教えて下さい。

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


 どこがと言われても元の式からの修正部分がおかしいとしか言いようが。
 それに元の式は最新日付ではなく最も古い日付を示す式。
 =IFERROR(LOOKUP(1,0/(H2:L2="◯"),H$1:L$1),"無し")
 ではどうか?
(ねむねむ) 2018/10/16(火) 11:00

ねむねむさんへ

有難う御座います。
元の式自体が、おかしいですか、すいません。
関数の意味が、分かってないです。

FERROR(LOOKUP(1,0/(H2:L2="◯"),H$1:L$1),"無し")←を入れましたが、全て"無し"と表示されてしまいました。どうしてでしょうか?

(ひーろ) 2018/10/16(火) 11:09


ねむねむさんへ

度々、すいません。再度、式を入れなおしたら、"無し"ではなく、式がそのまま表示されている状態になってます。

どうしてでしょうか?
(ひーろ) 2018/10/16(火) 11:16


 まず、結果が無しになるのは式中の◯と表の◯が異なっているのだと思う。(◯に見える文字は複数ある)
 なので表の◯をコピーして式の◯をそれで置き換えてみてくれ。

(ねむねむ) 2018/10/16(火) 11:21


 次に式がそのまま表示されてしまうのはそのセルの表示形式が文字列になっているのだろう。
 なのでセルの表示形式を標準にしてから式を入力しなおしてみてくれ。
(ねむねむ) 2018/10/16(火) 11:23

ねむねむさん

度々、すいません。標準に直したのですが、変わりません。
どうしてでしょうか?

(ひーろ) 2018/10/16(火) 11:30


 標準にしてから入力しなおしたか?
(ねむねむ) 2018/10/16(火) 11:42

ねむねむさん

度々、すいません。標準にして、式を張り付けてたつもりが、今すると、"無し"になってしまいました。
どうしてでしょうか?
(ひーろ) 2018/10/16(火) 11:47


 >まず、結果が無しになるのは式中の◯と表の◯が異なっているのだと思う。(◯に見える文字は複数ある)
 >なので表の◯をコピーして式の◯をそれで置き換えてみてくれ。
 これはおこなったのだろうか?

(ねむねむ) 2018/10/16(火) 11:49


ねむねむさん

コメント更新したつもりが、消えてました。すいません。

案の定、〇が違ってました!直したら、出来ました。
有難う御座います!!

お忙しい中、有難うございました!!

(ひーろ) 2018/10/16(火) 13:17


ねむねむさん

やはり、たびたびすいません。
式で、どうしても分からないので、教えて下さい。

 =IFERROR(値、エラーの場合の値)ですが、LOOKUP(1,0/(H2:L2="◯"),H$1:L$1)←これが、値だと思うのですが、1,0/(H2:L2="◯")の意味が分かりません。

教えて頂けましたら、幸いです。

(ひーろ) 2018/10/16(火) 13:26


 まず、H2:L2="0"だがこれは
 H2="◯"
 I2="◯"
 〜 
 L2="◯"
 の結果の配列となる。
 I2セルとK2セルが◯だった場合には{FALSE,TRUE,FALSE,TRUE,FALSE}となる。(TRUEが真、FALSEが偽)

(ねむねむ) 2018/10/16(火) 13:31


 次に
 0/(H2:L2="◯")
 これに上の結果を入れると
 0/{FALSE,TRUE,FALSE,TRUE,FALSE}
 となる。
 EXCELのワークシートでは論理値(TRUE、FALSE)を計算に使った場合、TRUEを1、FALSEを0として扱う。
 ここで0/0はエラーとなり、結果は
 {#DIV/0!,0,#DIV/0!,0,#DIV/0!}
 となる。

(ねむねむ) 2018/10/16(火) 13:35


 最後にLOOKUP関数では本来検索範囲が昇順になっていないとならないが、検索値が検索範囲内のどの値よりも大きい値で
 検索すると検索範囲が昇順でなくともその最後の値を検索するようになる。(また、エラー値は無視される)

(ねむねむ) 2018/10/16(火) 13:40


 なので検索範囲の最大値は0なので1で検索すると検索範囲内の最後の0、つまり一番右端の◯の位置を検索するようになる。
 一応流れとしてはこうなる。
(ねむねむ) 2018/10/16(火) 13:40

ねむねむさん

う〜ん、分かったような、分からないようなです。(すいません)
0/は、割り算している感じですか?スラッシュ?

0/(H2:L2="◯")は、0,(H2:L2="◯")と思ってしまうのですが。。。
(ひーろ) 2018/10/16(火) 13:53


 そう、EXCELでは/は割り算の記号(+が足し算の記号、*が掛け算の記号であるように)
 で、
 0/FALSE → 0÷0 → #DIV/0!
 0/TRUE  → 0÷1 → 0
 〜
 0/FALSE → 0÷0 → #DIV/0!
 で
 {#DIV/0!,0,#DIV/0!,0,#DIV/0!}
 となる。
(ねむねむ) 2018/10/16(火) 14:00

ねむねむさん

度々、すいません。
LOOKUP(1,0/(H2:L2="◯"),H$1:L$1の意味は、検査値1で、H2:L2の範囲で、"〇"が有ったら、TRUE で、
TRUE=1なので、0/1=1

対応範囲は、H$1:L$1で、その受講日を表示と言う事ですか?
で、エラーの場合の値は、無しと言う事でしょうか?

私は、意味理解してますか?
(ひーろ) 2018/10/16(火) 14:18


 0/1の結果は0(0は0以外の何で割っても0)
 だけ違っているがそれ以外はその理解でOK。

(ねむねむ) 2018/10/16(火) 14:26


ねむねむさん

検索範囲の最大値は0なので1で検索すると検索範囲内の最後の0、つまり一番右端の◯の位置を検索するようになる。

の、何故1で検索するのか、分かりません。検査値ですか?0/(H2:L2="◯")は、0か#DIV/0!しかないのに?

1=TRUE ですよね?

頭悪くて、すいません。
(ひーろ) 2018/10/16(火) 14:35


 これは
 (ねむねむ) 2018/10/16(火) 13:40
 で書いた
 >最後にLOOKUP関数では本来検索範囲が昇順になっていないとならないが、検索値が検索範囲内のどの値よりも大きい値で
 >検索すると検索範囲が昇順でなくともその最後の値を検索するようになる。(また、エラー値は無視される)
 による。
(ねむねむ) 2018/10/16(火) 14:42

 で、これはLOOKUP関数だけではなくVLOOKUP・HLOOKUP関数で検索の型にTREUを指定した場合、
 MATCH関数で検索の型に1、-1(-1を指定した場合は検索範囲よりも小さい値になるが)を指定した場合も同様で、
 検索範囲を昇順に並べなければいけない検索で共通するもの。
(ねむねむ) 2018/10/16(火) 14:45

 あ、MATCH関数で検索の型に-1の場合は降順で。
(ねむねむ) 2018/10/16(火) 14:46

ねむねむさん

度々、すいません。

なので検索範囲の最大値は0なので1で検索すると検索範囲内の最後の0、つまり一番右端の◯の位置を検索するようになる。

↑そう言う事ですか。では、一番左端の◯の位置を検索するようになると、式は、全く変わってしまうのでしょうか?(面倒くさい質問で、すいません)

関数の基本が、分かってないようです。
(ひーろ) 2018/10/16(火) 14:47


 左端であれば単純にMATCH関数で◯を検索してやればいい。
 検索の型に0を指定すると頭から検索して一番最初の場所を求める。
 =INDEX(H$1:L$1,MATCH("◯",H2:L2,0))
 で。
(ねむねむ) 2018/10/16(火) 14:58

ねむねむさん

何度も、有難う御座います。

 =IFERROR(LOOKUP(1,0/(H2:L2="◯"),H$1:L$1),"無し")
 =INDEX(H$1:L$1,MATCH("◯",H2:L2,0))

見比べてみました。
応用力がないので、難しいですね。左だと、INDEXなんですね。
(ひーろ) 2018/10/16(火) 16:21


再度、続きが有りまして、又質問させて下さい。

   G        H        I       J       K      L

1 最新受講日  5/30受講  6/13受講  7/11受講 8/2受講 9/5受講

↑の表の前段階が有りまして、9/5に受講受けた人のみの表があります。

   A        B        C  〜    I
  NO.       氏名      ふりがな    日付
まるまるさん                     9/5
ばつばつさん                     9/5

●一番上の表は、一年間の受講者リスト
●次の表は、受講日だけのリスト

なので、講習会があるたびに、1.受講日だけのリストを作る2.一年間の受講者リストに反映させる
その反映の仕方が、二つのリストをくっつけて、ふりがなでソート。重複している名前の方は、色が付くので
その人の所に、9/5に〇を付けて、一行削除と、とてもややこしい作業してます。

一行だけの人もいるし、二行の人もいるし。
説明分かりにくいですが、間違いなく反映出来る方法は、ないでしょうか?
手作業でとても時間が掛かります。

  

(ひーろ) 2018/10/16(火) 16:51


コメント返信:

[ 一覧(最新更新順) ]


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