[[20140926134121]] 『文字列の混ざった数値の最大値の返し方』(ヘタレカッパ) ページの最後に飛ぶ

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

 

『文字列の混ざった数値の最大値の返し方』(ヘタレカッパ)

稚拙な質問で申し訳ありませんが、質問させてください。

データ管理の為、IDとして数値を入力しております。
998,999,1000と登録していくうえで、3桁で収めた形にしようという方向性になりました。
998,999,A00といったように。(A00にこだわってるわけではありませんが、3桁にはこだわってるようです。)

IDの入力は手入力でいいのですが、問題は、IDの隣のセルに最大値を返すところです。
上記の例だと、A00(1000)が最大値になります。
ですが、普通にMAX関数を使うと999が最大値として返されます。
そこを、A00と表記させたい次第です。

さらに、最大値の隣のセルには、次の最大値になる予定の数値を自動で計算するようにしないといけません。

つまり、

ID  MAX  NEXT
998  A00  A01
999
A00

といった形です。
A99の次がB00という意味合いでも悩んでおり、どうすれば良いかお知恵を拝借致したく。

宜しくお願い致します。

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


 009の次は

  010 ?

  00A ?

  00Aなら00Zまで?
 
(GobGob) 2014/09/26(金) 14:32

GobGob様

ご返答ありがとうございます。

009の次は、010になります・・・。
正確には、1〜999までが数値、1000からA00となるのが理想だそうです。
A99までいくと、B00となる。
そういう要望です。

かなり厳しいとは思うのですが、何かヒントでもあればと思い。
以上、宜しくお願い致します。
(ヘタレカッパ) 2014/09/26(金) 14:42


 最大値

 B1 =DEC2HEX(MAX(INDEX(HEX2DEC(TEXT(A1:A3,"0;;0;@"))*1,)))

 +1

 C1 =SUBSTITUTE(CHAR(CODE(B1)+LEFT(TEXT(RIGHT(B1,2)+1,"000")))&RIGHT(TEXT(RIGHT(B1,2)+1,"000"),2),":","A")
 
(GobGob) 2014/09/26(金) 14:45

 ちなみに16進数の関数つかってるんで

 F99 以降はNGですわw。
 
(GobGob) 2014/09/26(金) 14:47

GobGob様

ご返答ありがとうございます。

まさか出来るとは思いませんでした。
本当に助かりました。

感動です。
(ヘタレカッパ) 2014/09/26(金) 14:56


 一応、F99以降にも対応。

 B1 =INDEX(A$1:A$17,MATCH(MAX(INDEX(CODE(LEFT(A$1:A$17&0))*100+RIGHT(0&A$1:A$17,2),)),INDEX(CODE(LEFT(A$1:A$17&0))*100+RIGHT(0&A$1:A$17,2),),))
 
(GobGob) 2014/09/26(金) 15:17

GobGob様

ご返答ありがとうございます。
まさか、F99以降の対応版もご検討いただけるとは。

16進数以上も問題なく機能しました。
大変お手数をおかけしました。
ありがたく、活用させていただきます。
(ヘタレカッパ) 2014/09/26(金) 17:27


先日はお世話になりました。
また問題があり、質問しに戻ってまいりました。

GobGob様のおかげで、1000以降の数値をA00と認識し、次の数値をA01を表記されるようになりました。
更に、F99以降も出るので問題ないと思い、進めてました。

ですが、新たな問題として、まっさらな状態、つまり、IDを001から始めた時がうまく起動しない次第です。
正確には、最大値は、009まで読み込んで、010以降は、910まで反応なしです。
+1に関しては、910以降でなければ、正常に機能しません。

自力で何とかしようと思い、色々とやってみましたが、結局、A00の壁にぶつかり、ここに頼ってしまった次第です。
すみません、本内容の数式より、910以前の数値の最大値と+1の方法をご教授頂きたく。
この関数を使うといいなどのアドバイスでも幸いです。

以上、ご検討の程、宜しくお願い致します。
(ヘタレカッパ) 2014/10/01(水) 18:36


 私はGobGobさんの投稿、
 2014/09/26(金) 14:45 のC1
 2014/09/26(金) 15:17 のB1
 の組み合わせで試しましたが、できているようです。

 上から順に試しましたが、正常に動作いたしました。
	[A]	[B]	[C]
[1]	001	F99	G00
[2]	002		
[3]	003		
[4]	004		
[5]	005		
[6]	006		
[7]	007		
[8]	008		
[9]	009		
[10]	010		
[11]	909		
[12]	910		
[13]	999		
[14]	F99		

 どのような時にどうなるのか、表にして提示いただけませんか?
( 稲葉) 2014/10/02(木) 07:43

 稲葉さんの言うとおり、できるはずなんだけど。。。

 数式の内容が

 B1 → 16進数の大きさで見ている(最初の回答)
 B1 → 三桁文字の先頭をキャラクターコードの大きさで見てる(次の回答)

 C1 → 三桁文字の2〜3文字目に+1して桁上がりを先頭のキャラクターコードに足し算する

 ってだけなんで。
 
(GobGob) 2014/10/02(木) 07:54

稲葉様

ご返答ありがとうございます。
説明不足で申し訳ありません。
意味合いとしては、初期からはじめたらということで

	[ID]	[MAX]	[MAX+1]
[1]	 001	 009	  910
[2]	 002		
[3]	 003		
[4]	 004		
[5]	 005		
[6]	 006		
[7]	 007		
[8]	 008		
[9]	 009		
[10]	 010
[11]	 011	
[12]     100
[13]     200

以上の状態になってしまいます。
MAXは、010~909まで「009」を拾い続けて、
MAX+1もMAXを拾うので、「910」から変化しない具合です。

稚拙な説明で申し訳ありません。
(ヘタレカッパ) 2014/10/02(木) 08:00


 あー。A列「数値」ありだね。

 B1 =INDEX(A$1:A$17,MATCH(MAX(INDEX(CODE(LEFT(TEXT(A$1:A$17,"000")))*100+RIGHT(TEXT(A$1:A$17,"000"),2),)),INDEX(CODE(LEFT(TEXT(A$1:A$17,"000")))*100+RIGHT(TEXT(A$1:A$17,"000"),2),),))
 
(GobGob) 2014/10/02(木) 08:09

 数字だけ3桁がかならず「数値」形式なら

 B1 =INDEX(A1:A100,MATCH(MAX(MMULT(COUNTIF(A1:A100,"<="&A1:A100&{"","*"}),{1;100})),MMULT(COUNTIF(A1:A100,"<="&A1:A100&{"","*"}),{1;100}),))

 でもいいかもね。

 ※全て「文字列」形式ならMMULTなし + 一工夫でOK。
 
(GobGob) 2014/10/02(木) 08:23

GobGob様

いつもご返答ありがとうございます。
2014/10/02(木) 08:09より最大値が返るようになりました。
08:23分も大分参考になり、数値のみのものに適用出来るよう努力したいと思います。

ただ、あと1点だけご教授いただければ。

	[ID]	[MAX]	[MAX+1]
[1]	 001	 004	  405
[2]	 002		
[3]	 003		
[4]	 004

MAX値はバッチリ返るようになってたのですが、MAX+1が、うまく返りません。
001〜099までが対象のようです。

本当に恐縮なのですが、お知恵を拝借致したく。
(ヘタレカッパ) 2014/10/02(木) 08:50


 B1 =TEXT(INDEX(A$1:A$17,MATCH(MAX(INDEX(CODE(LEFT(TEXT(A$1:A$17,"000")))*100+RIGHT(TEXT(A$1:A$17,"000"),2),)),INDEX(CODE(LEFT(TEXT(A$1:A$17,"000")))*100+RIGHT(TEXT(A$1:A$17,"000"),2),),)),"000")

 B1 =TEXT(INDEX(A1:A100,MATCH(MAX(MMULT(COUNTIF(A1:A100,"<="&A1:A100&{"","*"}),{1;100})),MMULT(COUNTIF(A1:A100,"<="&A1:A100&{"","*"}),{1;100}),)),"000")

 に変更してちょ。(結果は文字列になるよん)
 
(GobGob) 2014/10/02(木) 09:43 → 11:02 追加

GobGob様

本当にありがとうございました!
今回のことで、色々と勉強になりました。
もっと、EXCELについて理解を深めたいと思います。
(ヘタレカッパ) 2014/10/02(木) 10:06


コメント返信:

[ 一覧(最新更新順) ]


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