エクセルの値の頭文字のみ扱いたい

初歩的な質問かもしれませんがお許しください。

あるセルの値の頭文字のみを取得したいです。
例)A1:1.田中
B1:2.佐藤
C1:3.山田
⇒それぞれの頭文字の数字(1.2.3)のみを各変数に格納
もしくはセルを変数に格納し、その頭文字のみをWrite Cell等で書き込みたい

何かお考えのある方がいらっしゃいましたらご教示願います。
何卒、宜しくお願い申し上げます。

単純の「1文字目」というのであれば、セルの値を格納している変数に対して、

変数.ToString().SubString(0,1)

で、1文字目が取得できます。(変数がもともとString型であれば「ToString()」は不要です)
なので、その値をWrite Cellしてやればいいと思います。

String型.SubString(n, m)

は、String型の値の「n文字目(最初の文字を0文字目としてカウント)からm文字切り出す」という命令です。

数字が2桁以上になる可能性もある場合、上記の方法は使えないので、その場合はたとえば、正規表現の Replace アクティビティを使って、

Input : 元になるセルの値(GenericValueになっているのであれば .ToStringする)
Pattern : “^(\d+)…*$”
Replacement : “$1”

にすると、該当する数字部分(文字列型)がReplaceで受け取れます。
(上記は文字列を「行頭にある1個以上の数字 + 「.」(ピリオド)+行末までの任意の文字」に分割し、最初の数字にマッチする部分だけを取り出す正規表現になります)

Honoka様

いつもご助力いただき、誠にありがとうございます。
一文字めの取得方法の回答だけでなく、
その設定内容の詳細までお教えいただきありがとうございました。
これで場合によっては4文字目から2文字を取得(4,2)等にも応用できます!
ありがとうございます!

丁度2桁以上になる場合はどうしたらいいかも考えていたので大変助かりました!
教えて頂いたやり方で桁数に限らず数値だけ取得することができました。
すみませんが、追加で一点教えてください。
実は先ほど例で記載した値(1.田中、2.佐藤、3.山田)の1の前に半角のスペース( )が入っており、
その変数値をそのまま素直に表示してしまいます。
スペース無のWrite lineの結果⇒1
スペース有のWrite lineの結果⇒1.田中
Trim等を利用すれば空白を削除できるのでしょうか。

質問に不足があったせいでの更問となってしまい大変申し訳ございませんが、
お時間がありましたらお知恵をお借りさせて頂けますと幸いです。

以上、何卒宜しくお願い申し上げます。

前後のスペースを削除するなら、

 String型.Trim()

が使えます。他に前側のスペースだけ取る .TrimStart() や、後ろだけの .TrimEnd()藻あるので、適宜使い分けてみてください。

1 Like

Honoka様

早急なご回答、ありがとうございます。
Trim.()とするだけでいいのですね…。できました!
またTrimにも種類があること、承知致しました。
必要になったら利用してみようと思います。
大変助かります。ありがとうございました!

Honoka様

度々申し訳ございません。
お時間がある時で構いませんので、もう一つだけお教えください…。
文字数が不確定の場合で、文頭ではなく文末の2文字を取得したい場合、
どのような設定で可能でしょうか。
ご助力いただけますと幸いです。

以上、何卒宜しくお願い致します。

.NET Frameworkの正攻法だと、

文字列型.Length

で文字数が取得できるので、たとえば後2文字であれば、

文字列型.Substring(文字列型.Length - 2, 2)

で後2文字を切り出せます。

あと、VB.NET表記では、

Left(文字列型, n)  => 左からn文字
Right(文字列型, n)   => 右からn文字

という関数もあります。右から/左からであればこちらのほうが簡単だと思います。
(Substringのほうが応用範囲は広いので、両方覚えておいて損はないと思いますが)

Honoka様

度々のご回答、大変助かります。勉強になります!
まず文字数を取得してその末尾から判断するということが可能なのですね。
VB.NET標記の件までお教えいただきありがとうございます。
基本はSubstringを利用していきたいと思います。

一先ずのお礼とさせていただきます。
ご回答くださいましてありがとうございました!