文字列の抽出と計算 2.Excel関数 ~ ② 半角スペースを利用

 

 はじめに

前回は、求める数値の位置と長さが一定であることに着目し、MID関数を用いて中央の数字を取り出しました。

 

infoment.hatenablog.com

 

今回も、前回と同じテーマで、別の解決方法を模索してみます。

 

今回のテーマ

前回と同じテーマです。

一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。

 

f:id:Infoment:20180619063141p:plain

 

半角スぺースを利用する

今回抽出したい値は全て、その前後に半角スペースが入力されています。この規則性を利用して、文字を抽出します。

 

使用する関数:FIND,LEN,RIGHT,LEFT

最初に登場する半角スペースが何文字目にあるか、FIND関数で求めます。

※B列に入力した数式を、C列に表示させています。

f:id:Infoment:20180620205234p:plain

 

4文字目が半角スペースな訳ですから、全体の文字数を求めるLEN関数と組み合わせて、最初の半角スペース以降の文字数を求めることができます。

f:id:Infoment:20180620205806p:plain

 

この文字数分だけ文字の右から抜き出すことで、最初のグループを取り除きます。

f:id:Infoment:20180620210341p:plain

 

求められた「456 789」に対して、同じように半角スペースの位置を求め、その直前まで左から抜き出します。

f:id:Infoment:20180620211802p:plain

 

これに1を掛け、数値化します。2~3行目も同様です。

f:id:Infoment:20180620212013p:plain

 

最後に合計を求めて、完了です。

f:id:Infoment:20180620212158p:plain

 

この方法であれば、空白位置が変わっても数式が追従するので、自動対応可能です。

f:id:Infoment:20180620212400p:plain

 

おわりに

今回の方法に対する評価(私見)は、以下のとおりです。

メリット :

  • 半角スペースの位置変更に自動対応可能(前回のデメリットを一部解消)
  • 行列の増減に追従してくれる

デメリット:

  • 「*1」など、直感的に理解しにくい(知らないと設定できない)
  • 数式が大変複雑。数式を誤って編集すると、元に戻すのが非常に困難。
  • 半角スペースが2個以外の場合に対応できていない

半角スペースの位置変更に追従できるようになった点が、前回より進歩したところでしょうか。ただし数式が複雑化したため、作成した方以外のメンテナンスが困難になってしまいました。

 

(おわり)