• ベストアンサー

右からスペースを読む関数

Acta Physiologica Scandinavica 80 Acta Radiologica Diagnosis 5 Acta Radiologica Therapy Physics Biology 12 上は1行ずつ1つのセル内にあり、 雑誌名のラテン語と巻がスペースで区切られています。 1行目を例にとると、 Acta Physiologica Scandinavicaまでが雑誌名で、 80が巻です。 雑誌名と巻をわけたいのですが、うまくできません。 スペースをfindで探しに行くと、 ActaとPhysiologicaの間のスペースを読みにいき、 Scandivanicaと80の間のスペースを読みません。 どのような関数を組めば、巻号のみ抜き出せるのでしょうか? どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

文字と数字の間のスペースが全部半角スペースだったら一発で解決するのですが この方法は全角スペースは対応出来ないようです。 なので 一旦 全てのセルを範囲選択して「全角スペース」→「半角スペース」に置換しましょう。 その後で「データ」ー「区切り位置(E)」で 「スペースによって~」の方を選択すれば 一番上の例だと、A列「Acta」B列「Physiologica」C列「Scandinavica」D列「80」 のように区切られるはずです。 で、D列をE列にでも移して、D列に=A&B&Cで解決。 かと思いきやセルが5つになる場合もあるんですね。。 であれば思い切って絶対に安全な(例えばZ列)に「=SUM」でA~Yまで範囲選択すれば そこには数字のみ残ってるように見えますね。 で 文字列を「&」でつなげた隣にZ列を値で貼り付ければOKでしょう。 って もう解決済みですかね? まぁ「やろうと思えば出来る」の参考までに。

tamarichan
質問者

お礼

大変ありがとうございました。 関数なしでも解決できるのですね。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 こちらの数式は、右側から、数字のあるところまでを出すという数式です。 =RIGHT(A1,COUNT(INDEX(RIGHT(A1,ROW($A$1:$A$20))*1,,)))*1 最後の空白を探すというなら、このようになります。ただし、空白は、半角スペースが条件です。もし、全角スペースがある場合は、置換で入れ替えてください。 =MID(A1,FIND("^",SUBSTITUTE(A1," ","^",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,256)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

訂正します。 ×(ただし5桁までです) ○(ただし9999までです) なお、A列の文字列の右から5つの文字を取り出し、その中でスペースを探していますので、その5つの文字のなかにスペースが2つあったら不都合が生じますのでご注意願います。 その倍、号数が9999(4桁)までは必要ないのであれば、もっと少ない数を右から取り出すように変えて対処できると思います。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

A1に Acta Physiologica Scandinavica 80 があるなら まず C1 に、 =TRIM(MID(RIGHT(A1,5),FIND(" ",RIGHT(ASC(A1),5)),5)) それから B1 に =LEFT(A1,LEN(A1)-LEN(C1)) これで B1 に名前、C1に号数がでます。(ただし5桁までです) お書きの例ではスペースが半角全角が混在しているようなので面倒な式になりました。

tamarichan
質問者

お礼

早速ご回答いただき、まことにありがとうございました。 半角スペースでと思ったのですが、全角になってしまっているところは、カンマがあってそれを削除したのち、スペースを削除しなかったためと思います。 お手数をかけ、申し訳ありませんでした。 早速やってみます。