- ベストアンサー
数字の選出方法
エクセルで01-01-02・01-02-05と記入している中で右側の数字の 一番大きなものを表記しなさい という関数を使いたいのですが、うまくいきません。 教えてもらえないでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>表示形式も変わることはありません。 という情報は既に回答No.1様の御回答に対する補足コメントにて >セルは文字列で と書かれておられたのて存じておりますが、結局、区切られた数字の塊の数(或いは1つのセルに入力されている文字列の中に含まれている「-」という区切りの数)は不明なままですし、各々の数字の塊の中には1桁のものや、3桁以上のものが含まれているのかどうかも不明なままです。 >後ろ2つの数字は最大30位までしか増える予定はありません つまり、「-」で区切られた幾つかの数字の内、右から数えて1番目と2番目の数字は必ず30までの2桁の数字ではあるものの、それ以外の数字は1桁となる事もあれば、3桁以上となる事もあり得るという事なのでしょうか? そして、 >(1つのセルの中に入力されている文字列の中で)末尾が何番目の数字になるのかという事 に関しては特に触れておられないという事は、例えば「4899-85-2-26-10」などの様に「-」が3つ以上含まれているパターンも存在していて、その様な場合であっても兎に角、末尾の2桁のみを取り出して比較すれば良いという事で構わないのでしょうか?(つまり、必ずしも左から数えて3番目にある数字の塊同士を比べるとは限らない) それと、 >B列に左のように並んで表示されています。 という文面から、それらの文字列が縦1列に並んでいて、その列はB列である事は判りましたが、そのB列とは何というシート名のシートなのかという事は不明なままですし、前回の補足コメントで書かれておられる例には行番号が記されておりませんので、 >セルが縦一列に並んでいるものとした場合には、文字列が入力されているセルは何列の列に並んでいて、文字列が入力されているセルの中で一番上端にあるセルは何行目のセルになるのでしょうか? という事も判りません。 何度状況を訊ねても質問者様からは満足な情報が得られそうにない以上、仕方が御座いませんので解り難くなる事は承知の上で伏字にて対応する事に致します。 今仮に、元データである「01-01-02」や「01-12-01」などといった文字列が入力されているシートが××シートであり、回答No.4に対する補足欄の例において「01-12-01」と入力されているセルが××!B○セルであるものとします。 又、未使用のシートである△△シートのA列を作業列として使用するものとします。 まず、△△!A○セルに次の関数を入力して下さい。 =IFERROR(RIGHT(××!$B○,2)+0,"") 次に、△△!A○セルをコピーして、同じ行の(○+1)行目以下に貼り付けて下さい。 そして、「右側の数字の一番大きなもの」を表示させるセルには次の関数を入力して下さい。 =MAX(××!$B:$B) 以上です。
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
当方が2度に亘って >御説明がそれだけでは情報不足であるため、どの様な状況となっていて、どの様な値を取り出したいのかという事が伝わって来ません。 と申し上げているのにもかかわらず、どうして質問者様は >説明が悪くて大変申し訳ありません。 と言いながら、状況と条件を確認するためにこちらが発した質問の殆どを無視して、こちらが「その説明では解らない」と申し上げたのと同じ類の説明ばかり繰り返すのですか? こちらが質問者様の置かれている状況や質問者様がやりたい事に関して知るために尋ねた事の中で、質問者様にお応え頂けたのは、 >御質問文の例では「01-01-02・01-02-05」と横に書かれていたため、文字列が入力されているセルは横一列に並んでいる様に思えたのですが、実際には縦一列に並んでいるなどという事は無いのでしょうか? だけではありませんか。 それ以外は相も変わらず説明になっていない御説明ばかりです。 こちらが「その説明では解らない」と言った説明など何度繰り返された処で話が進む訳が御座いません。 質問者様御説明では判らない様々な状況が考えられますので、それらの想定される状況の内、どういったものを考慮に入れねばならないのかという事と、どういったものは考慮しなくても良いのかという事が明らかとならなければ、正しい解決方法を提示出来るかどうかも定かにはなりません。 そのため、質問者様の御説明では不明な点に関してお尋ねした次第なのですが、前回の回答でお尋ねした以下の点に関しては御教え頂けないのでしょうか? >「-」で区切られた数字が幾つか横一列に同じ行上に並んでいて、例えばA1セルに「01-02-05」、B1セルに「00033」、C1セルに「4899-85-2-56-0010」、D1セルに「9-285-25-156-00010」といった具合に、区切られた数字の塊の数も、それぞれの塊ごとの数字の桁数もばらばらな場合、(1つのセルの中に入力されている文字列の中で)末尾が何番目の数字になるのかという事や、(1つのセルの中に入力されている文字列の中で)末尾以外の所にどんな数字が並んでいるのかという事には関係なく、兎に角末尾の数字だけを比べ、つまり、A1セルの3番目の数字である「05」とB1セルの1番目の数字である「00033」とC1セルの4番目の数字である「0010」とD1セルの5番目の数字である「00010」の中で、最も大きな数字であるB1セルの1番目の数字の頭の「00」を削除した「33」を求めれば良いという事なのでしょうか? >それとも、1つのセルに入力されている文字列の中に含まれている「-」の数は必ず2つと決まっているのでしょうか? >「-」で区切られている数字のそれぞれは必ず2桁の数字と決まっているのでしょうか? >「02-3A-22」や「14- -50」、「 -ff-S7」等の様に、数字以外のものが混じっているという事は無いのでしょうか? >御質問文にある「01-01-02」、「01-02-05」の例の様に、比べなければならない文字列が入力されているセルは2個だけと決まっているのでしょうか?(もし決まっていない場合には、セルの数は最大で何個くらいになる事を想定しなればならないのでしょうか?) >セルが縦一列に並んでいるものとした場合には、文字列が入力されているセルは何列の列に並んでいて、文字列が入力されているセルの中で一番上端にあるセルは何行目のセルになるのでしょうか?
補足
B列 発注NO 01-12-01 B列に左のように並んで表示されています。 01-12-02 セルは1つのセルに入れてあります。 01-12-03 後ろ2つの数字は最大30位までしか増える予定はありません 01-12-04 表示形式も変わることはありません。 01-12-05 左の表でたとえるならこの中で後ろ2つの一番大きい 01-12-06 01-12-10を表示させたいのです 01-12-07 01-12-09 01-12-10
- kagakusuki
- ベストアンサー率51% (2610/5101)
>01-02-02が一つのセルです。最後の02が11などのように数字が増えていくので、01-02-02の中の02の部分で一番大きい数字を表示させたいのです。 御説明がそれだけでは情報不足であるため、どの様な状況となっていて、どの様な値を取り出したいのかという事が伝わって来ません。 「最後の(中略)数字が増えていくので」との事ですが、御質問文では「01-01-02」、「01-02-05」という具合に左から2番目の数字も増えて行っています。 という事は、「-」で区切られた数字が幾つか横一列に同じ行上に並んでいて、例えばA1セルに「01-02-05」、B1セルに「00033」、C1セルに「4899-85-2-56-0010」、D1セルに「9-285-25-156-00010」といった具合に、区切られた数字の塊の数も、それぞれの塊ごとの数字の桁数もばらばらな場合、(1つのセルの中に入力されている文字列の中で)末尾が何番目の数字になるのかという事や、(1つのセルの中に入力されている文字列の中で)末尾以外の所にどんな数字が並んでいるのかという事には関係なく、兎に角末尾の数字だけを比べ、つまり、A1セルの3番目の数字である「05」とB1セルの1番目の数字である「00033」とC1セルの4番目の数字である「0010」とD1セルの5番目の数字である「00010」の中で、最も大きな数字であるB1セルの1番目の数字の頭の「00」を削除した「33」を求めれば良いという事なのでしょうか? それとも、1つのセルに入力されている文字列の中に含まれている「-」の数は必ず2つと決まっているのでしょうか? 又、「-」で区切られている数字のそれぞれは必ず2桁の数字と決まっているのでしょうか? 又、「02-3A-22」や「14- -50」、「 -ff-S7」等の様に、数字以外のものが混じっているという事は無いのでしょうか? 又、御質問文にある「01-01-02」、「01-02-05」の例の様に、比べなければならない文字列が入力されているセルは2個だけと決まっているのでしょうか?(もし決まっていない場合には、セルの数は最大で何個くらいになる事を想定しなればならないのでしょうか?) それに、御質問文の例では「01-01-02・01-02-05」と横に書かれていたため、文字列が入力されているセルは横一列に並んでいる様に思えたのですが、実際には縦一列に並んでいるなどという事は無いのでしょうか? 又、セルが横一列に並んでいるものとした場合には、文字列が入力されているセルは何行目の行に並んでいて、文字列が入力されているセルの中で一番左端にあるセルは何列のセルになるのでしょうか? 或いは、セルが縦一列に並んでいるものとした場合には、文字列が入力されているセルは何列の列に並んでいて、文字列が入力されているセルの中で一番上端にあるセルは何行目のセルになるのでしょうか?
補足
説明が悪くて大変申し訳ありません。 01-02-01 01-01-02 01→決算期 真ん中の01とか02は担当者番号 最後の2ケタ が件数です 縦一列に件数が増えると20くらいまでになると思います。 別のシートに現在の最後の件数を表示させたいのです。 たとえば今6件あったとしたら01-01-06なのでその番号を表示しなさいと言う 関数を使えないかなと思っています。 教えて頂けると大変助かりますので宜しくお願いします。
- kagakusuki
- ベストアンサー率51% (2610/5101)
質問者様の御説明では情報不足であるため、どの様な状況となっていて、どの様な値を取り出したいのかという事が伝わって来ません。 例えば、A1セルという1つのセルに「01-01-02・01-02-05」という文字列データが入力されていて、「-」で区切られている数値は必ず2桁のものが3個ずつになっているのであって、「21-109-5・8888-5678-2」の様な数字の桁数が異なるものや、「36-56・00-11-22-33」の様に2桁の数字が3組以外となっているものなどは無いと考えても良いのでしょうか? それと、右側の数字の一番大きなものとは、例えば「99-88-55・19-30-22」の場合には左側の99、88、55は無視して、右側の19、30、22の中で最も大きな30を取り出せば良いのでしょうか? その考え方で宜しければ、御質問の関数の一例は次の様なものとなります。 =IFERROR(TEXT(MAX(MID(REPLACE(A1,1,FIND("・",A1&"・"),),{1,4,7},2)+0),"00"),"")
補足
説明が足りずすみません。01-02-02が一つのセルです。最後の02が11などのように数字が増えていくので、01-02-02の中の02の部分で一番大きい数字を表示させたいのです。 宜しくお願いします。
- FEX2053
- ベストアンサー率37% (7991/21371)
=day(セル)で確認して、後ろの数字が出てくるかどうか? 出てくるなら、これは「日付」データですので上記の方法で 引っ張り出した後、=max()で比較ればいいです。
補足
有難うございます。 セルは文字列でただの数字です この場合はどうしたらよいのでしょうか?
お礼
関数自体をほとんど理解していないので伝えることも上手く出来なくて イライラされたと思いますが、最後まで付き合って答えを頂きまして、 本当に有難うございました。