[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列の混ざった数値の最大値の返し方』(ヘタレカッパ)
稚拙な質問で申し訳ありませんが、質問させてください。
データ管理の為、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
ご返答ありがとうございます。
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
ご返答ありがとうございます。
まさか出来るとは思いませんでした。
本当に助かりました。
感動です。
(ヘタレカッパ) 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
ご返答ありがとうございます。
まさか、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
いつもご返答ありがとうございます。
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 追加
本当にありがとうございました!
今回のことで、色々と勉強になりました。
もっと、EXCELについて理解を深めたいと思います。
(ヘタレカッパ) 2014/10/02(木) 10:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.