[[20190806111508]] 『ナンバーを求める』(木村) ページの最後に飛ぶ

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

 

『ナンバーを求める』(木村)

こんにちは。質問させていただきます。

Sheet1に以下のような数字を入力しています。
A1=2019(西暦)
B1=(今回求めたい関数)

Sheet2に以下のような数字が入っているとします。
Sheet1のB1に以下を参照させて、西暦ごとの最大値を求め、それに+1して、
西暦ごとの直近のナンバーを求めたいというものです。

A1=2019ならば、201905となり、
A1=2020ならば、202003となります。
A1=2021ならば、202101としたいのです。

どうぞよろしくお願いいたします。

__A______B____
3_201901_2019
4_201902_2019
5_201903_2019
6_201904_2019
7_202001_2020
8_202002_2020



< 使用 Excel:Excel2013、使用 OS:Windows7 >


 >201905

 ↑ の「05」は、5月という意味ではなく、単なる連番ですよね?
 つまり、最大値が 201912 なら 201913 になればいいんですよね?

 Sheet2のA列は、例のように昇順になっているという前提で

 =IF(A1="","",IFERROR(LOOKUP(1,0/(Sheet2!B3:B100=A1),Sheet2!A3:A100+1),A1*100+1))

 以上です
(笑) 2019/08/06(火) 11:37

 ちなみに、Sheet2のA列が昇順ではない場合

 =IF(A1="","",IF(COUNTIF(Sheet2!B3:B100,A1),MAX(INDEX((Sheet2!B3:B100=A1)*Sheet2!A3:A100,0))+1,A1*100+1))

 ただし、Sheet2のA列は数式で空白にしていない(文字列はない)という前提

 参考まで
(笑) 2019/08/06(火) 11:50

MAXIFとかが使えるのではないかと思いますが
こちら EXCEL2010で使えないので・・・

B1に

=IF(ISNA(MATCH(A1,Sheet2!B3:B11,0)),A1*100+1,MAX(IF(Sheet2!B3:B11=$A$1,Sheet2!A3:A11,0))+1)

として Ctrl+Shift+Enter で 配列数式として確定、ではどうでしょう?

(渡辺ひかる) 2019/08/06(火) 12:05


渡辺ひかるさんとかぶったけど、書いちゃったので投稿しておきます。

MAXIFS関数使えば簡単そうだけど、Excel2013だとそうもいかなそうなので代理検索
http://excel-forest.net/2017/01/18/saidai/
↑を参考に配列数式を使うと解決しそうです。

 こんな感じになればokっぽい
{=MAX(IF(Sheet2!B3:B9=A1,Sheet2!A3:A9))+1}

(もこな2) 2019/08/06(火) 12:26


 一応、言っておくと
 Sheet2のA列が昇順ではなく、かつ数式で空白にしている場合

 =IF(A1="","",IF(COUNTIF(Sheet2!B3:B100,A1),MAX(INDEX((Sheet2!B3:B100=A1)*(0&Sheet2!A3:A100),0))+1,A1*100+1))
                                                                          ~~~~~~~~~~~~~~~~~~
 もちろん普通に Enter だけで確定(1つ目、2つ目の回答も同じ)

 範囲は実際の表に合わせて下さい。

 参考まで
(笑) 2019/08/06(火) 12:43

コメント返信:

[ 一覧(最新更新順) ]


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