『文字列から単位だけを抜き出したい』(ひつじ) お世話になります。 A列に 151人 20箇所 1,820人 61,000時間 1,500ha というような文字列が並んでいるのですが、 ここからB列に 人 箇所 人 時間 ha と、単位を表す文字列だけを抜き出すには、どのように関数を使えばよいのでしょうか? (よくある質問だったらすいません) どうかよろしくお願いいたします。 ---- ちょっと見た目が悪いのですが、 =IF(CODE(MID(A1,LEN(A1)-1,1))<=57,RIGHT(A1,1),IF(CODE(MID(A1,LEN(A1)-2,1))<=57,RIGHT(A1,2),IF(CODE(MID(A1,LEN(A1)-3,1))<=57,RIGHT(A1,3),""))) とIF文をネストして求めてみました。 一応、提示された例には対応していますが、 入力された文字列の後ろに取り出したい文字があり、その文字の前には数字が入力されているのが前提となります。 取り出したい文字数が多いのなら、文字数に応じてIF文を追加します。 IF文のネストは7個までですので、7文字までは対応可能かと・・・(^^;) (マーヤ) ---- =IF(A1="","", IF(COUNT(-LEFT(A1,ROW($1:$20)))=0,A1, REPLACE(A1,1,MATCH(10^17,-LEFT(A1,ROW($1:$20))),)))として、Ctrl+Shift+Enter。 とされたらどうでしょう?  (LOOKUP) ---- 私も少し試してみました。 =IF(CODE(RIGHT(A1,2))>50,LEFT(A1,LEN(A1)-2)*1,LEFT(A1,LEN(A1)-1)*1) ではダメでしょうか。   (jun53) ---- 失礼しました。 >単位を表す文字列だけを抜き出すには でしたね。 =IF(CODE(RIGHT(A1,2))>50,MID(A1,LEN(A1)-1,LEN(A1)),MID(A1,LEN(A1),LEN(A1))) :単位2文字までの限定版ですね。 貧弱なものでスミマセン。   (jun53) ---- マーヤさん、ゴメンナサイ 同じようなものでしたね、よく見てませんでした。 申し訳有りませんです。   (jun53) ---- 割り込みゴメンなはれや。 私も寄せてくだはい。 「Alt」+「F11」でVBEを開く 「挿入」→「標準モジュール」を選択 下のコードをコピペ 「Alt」+「Q」でエクセルに戻る 準備完了 A1から列方向ににデータが有るとして B1に=hituzi(A1)と入力 下方向にコピペ ほな...(弥太郎) '----------------------- Function hituzi(data) Dim i As Integer For i = 1 To Len(data) data = StrConv(data, vbNarrow) If Not IsNumeric(Mid(data, i, 1)) And Mid(data, i, 1) <> "," Then hituzi = Mid(data, i, 69) Exit For End If Next End Function ---- みなさんありがとうございます。遅レス失礼いたしました。 (マーヤ)さま >入力された文字列の後ろに取り出したい文字があり、その文字の前には数字が入力されているのが前提となります。 基本的にすべてこのかたちなので、教えていただいた式で完璧に対応可能です。 今、式を解読中です(初心者なので…)。とても勉強になります。 助かりました。ありがとうございます! (LOOKUP)さま この式をB1セルに入れてみたところ、エラー値#N/Aが表示されてしまいます。 式の解読を試みましたが、恥ずかしながら理解できませんでした。 コピペのやり方が悪いのでしょうか?よろしければ教えてください…。 (jun53)さま 一番目に教えていただいたのは数字のみ取り出せる式ですよね。 実はこの式も、私にとっては日頃とても役立ちます。 今回は一度に両方教えていただいて、得をした気分でおります(^^) ありがとうございます。またよろしくお願いします! (弥太郎)さま できました! しかし、私自身はマクロについてまったくの無知でして、 自動保存も怖くていじったことがないくらいです。 なので、教えていただいた手順でなぜこうなるのか 全くわかっておりません。情けない(-_-;) これを機会に勉強してみようと思います。ありがとうございます!(ひつじ) ---- 数式の=以降の部分をここからコピーして、数式バーに貼り付けたのち、 Enterの代わりにCtrlとShiftとEnterとを同時に押すのです。 数式バーの表示がこのようになるでしょう? {=IF(A1="","", IF(COUNT(-LEFT(A1,ROW($1:$20)))=0,A1, REPLACE(A1,1,MATCH(10^17,-LEFT(A1,ROW($1:$20))),)))} 151人      人 20箇所     箇所 1,820人     人 61,000時間   時間 1,500ha     ha 余計なことかもしれませんが、このようなものも抽出できますよ。 20人/月    人/月 5.8%増   増 3月20日頃  頃 9時30分開始 開始  単位が右2桁以内ということですと、このようなものもよいかもしれません。 =IF(COUNT(RIGHT(A1)),"",RIGHT(A1,2-COUNT(LEFT(RIGHT(A1,2)))))                        (LOOKUP)