[[20040324094431]] 『文字列から単位だけを抜き出したい』(ひつじ) ページの最後に飛ぶ

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

 

『文字列から単位だけを抜き出したい』(ひつじ)

 お世話になります。
 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)


コメント返信:

[ 一覧(最新更新順) ]


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