- ベストアンサー
長い文字列から特定の数字を取り出す方法
jcctairaの回答
colinaさん こんにちは。 Visual Basicのカテゴリーでの質問なのでVBA(マクロ)で回答します。 ユーザ関数を作成してみました。 ※標準モジュールに作成してください。 Public RE As Object Public mc As Object Function 数字取得(検索文字 As Range, 位置 As Integer) As String If RE Is Nothing Then Set RE = CreateObject("VBScript.RegExp") RE.Pattern = "(\d{3,8})" ' 数字が3個~8個連続してマッチ RE.Global = True Set mc = RE.Execute(検索文字) 数字取得 = "該当なし" If 位置 <= mc.Count Then 数字取得 = mc.Item(位置 - 1) End Function 使用方法法は セルB2 ==数字取得(A2,1) セルB3 ==数字取得(A2,2) ※数字の連続桁数は RE.Pattern = "(\d{3,8})" を自由に変更してください。 皆様から指摘通り、仕様(プログラム等を作る時のルール)が確定しないと、回答も難しくなります。 今回は【8ケタの連続数字を取得したい】ようなことを記述すればもっとわかりやすかったと思います。
関連するQ&A
- Excelで特定の文字列から自動的に数値を入れたい
A列1行目の文字に対してB列1行目に自動的に数値が表示されるようにしたいのですが可能なのでしょうか? A B 1 林檎 150←自動的に表示したい。 例えばA列1行目に『林檎』と入れたらB列1行目に『150』、A列1行目に『梨』と入れたらB列1行目に『200』という感じにしたいのです。 ちなみにA列1行目はデータ入力規則でリストから選択肢を選ぶように設定されています。
- ベストアンサー
- オフィス系ソフト
- Excelの数字の文字列入力で
Excel2003です。 セルに "651,652,653" のような3ケタ分の数字とカンマの文字列を入力しようとすると 651652653 という数値にみなされてしまいます。 入力するときに、文字列の先頭に ’ を付けると文字列に みなしてもらえるのですが、つい忘れてしまい面倒です。 セルに指定などで設定する方法は何かありますでしょうか。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- 文字列を間引く方法
EXCEL関数、あるいはマクロで下記の処理ができないでしょうか。 1列 1行 T20339636 2行 T20379678 3行 T20340013 のように各セルに9桁の文字列が設定されています。 各文字列の2桁目から5桁目までを間引き、下記のように 設定する。 1列 1行 T9636 2行 T9678 3行 T0013 ご教授のほど、よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- TCHAR文字列?の特定部分の数字文字をint型の数値に変える方法
TCHAR文字列?の特定部分の数字文字をint型の数値に変える方法ですが どうすればよいでしょうか? int test(LPCTSTR s) { int a, b, c, d; /* TCHAR?型文字列を数値のintに変える方法??? a = 12の前2桁 b = 34の2桁 c = 5の最後の1桁 */ d = a + b - c; return d; } ret = test(_T("12345")); の場合、retに41が返ってきてほしい。
- ベストアンサー
- C・C++・C#
- セル内の数字も混じった文字列から特定パターンの数字列を取り出す
またまたお世話になります。 (1)セル内に1つまたは2つのハイフンでつながる数字列を含む文字列(ブランクも含みます)がある場合にそこからその数字列のみを取り出す方法をアドバイス願います。 例 cを文字、xを数字(最大7桁)とします。 セル内の文字列 cccccc cccc cccc xxxxxxx-xx-x ccccccc cccc cccc からxxxxxxx-xx-x を取り出して文字列として別のセルに置く方法です。 (2) もしこのxxxxxxx-xx-x が[ と ] で囲まれていた場合はもう少し容易になりますか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルで半角数字には数値と文字列がある?
http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?
- ベストアンサー
- その他MS Office製品
- マクロである文字以降の文字列を取得するには?
2枚のシートの一部ずつを条件に合わせ取り入れ新シートを作るマクロを作っています。 そこで1つ問題な列があります。 D列の各セルには「,」で区切られて2つのデータが入っています。 123 , 456 55 , 67 8 , 1 678 , 9 の様な形です。 「,」の両側にはスペースが入っています。 このうちの「,」の右側の数値を変数に入れたいんですが、文字数が行によって違います。 右側がスペースを含めて3文字に決まっているなら、 変数 = Right(Cells(i, 4), 3) の様な感じになりますが、一桁から三桁まであります。 こういう場合、「,」の右側を取得する関数とか有るんでしょうか? それとも他の方法を取るんでしょうか?
- ベストアンサー
- オフィス系ソフト
- 特定の文字列を含む数値の分散計算
Excelで特定の文字列を含む数値の分散を計算したいのです。 I2~I10にA・Bどちらかの文字が書いてあり、A2:H10には数値が書いてあります。 A~H列の数値について、Aを含むセルの分散とBを含むセルの分散を計算しなくてはなりません。 例えばA列の場合、A2~A10の中でI行にAが書いてあるもののみの分散・Bが書いてあるもののみの分散を計算するといった具合です。
- 締切済み
- オフィス系ソフト
- Excel セル内の文字列の数字の桁数を増す方法について
エクセル2000にて、セル内に4桁、6桁、7桁、8桁の文字列の数字が、別々に入っているとき、文字列の数字が7桁の時のみ 0 を書き加えて、8桁にする方法を教えてください。 例)A1 4001 33000018 6200095 →06200095 6100092 →06100092 4176 200025 6100061
- ベストアンサー
- オフィス系ソフト
- VBAでセルデータの転記(文字列)
VBAでセルのデータを下記のように他のセルに持っていく場合、文字として入れてある数字(例えば先頭に0がつくようなもの)は、自動的に数値に変えられて0が消えてしまいます。 また、長いものは指数表示になってしまい、15桁を超えるものは後ろが0になってしまいます。 持っていく先のセルを文字列に設定しておけばいいのでしょうが、持っていく元データが全て文字列ではなく、数値の場合もあります。 元データが数値であれば数値として、文字列であれば文字列として持っていくにはどうすればいいのでしょうか? Sub test() Cells(3, 3).Value = Cells(1, 1).Value End Sub
- ベストアンサー
- オフィス系ソフト