エクセル 文字列の中から数字を抽出する方法
以前 QNo.5823420 で質問させて頂いたんですが
再度質問させてください。
"オーダー番号"+"半角スペース"+"部品型番"+"半角スペース"+"個数"+"半角スペース"+"部品名"
というような文字列の中から個数の数のみを抽出する方法を教えてください。
"文字列"+"半角スペース"+"文字列"+"半角スペース"+・・・と文字列の繋がる数は決まってませんので
個数は何番目のスペースの後にくるかは不定です。
数量の半角"ケ"とその前の半角スペースまでの間の数字を抽出したいです。
例1)文字列 :ABC110 XXYYZZ5566 2ケ ****
抽出文字:2
例2)文字列 :ABC XYZ 5566 DDEE11 3ケ FFGG
抽出文字:3
よろしくお願いします。
No.7ベストアンサー
- 回答日時:
こんな感じかな? 9桁まで
=LOOKUP(10^10,MID(A2,FIND("ケ",A2)-{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9})*1)
配列数式(配列定数なので[Enter]のみの確定でOKです)
回答ありがとうございました。
お礼遅くなりすいません。
うまく抽出できました。
データの中には個数の前のスペースが無い物もまれにあったんですが
この方法はその場合でも抽出ができました。
配列数式はまだよくわからないんですがありがとうございました。
No.6
- 回答日時:
「ABC110 XXYYZZ5566 2ケ ****」
で「ケ」の位置が何ケタ目にあるか見つけ出す。
「ABC110 XXYYZZ5566 2」
見つかった位置の1文字前から左側を抜きとる。
「 2」
右から1つ目に見つかる空白を探す。その右側を抜きとる。
「2」
以上です。
あとはこれらを文字列操作の関数の組み立てで実施。
普通に考えたらこの原理でしょう。
------------------------
空白をカンマ「,」に置き換えてCSVとして保存し、開き直すと
各列が「ABC110」「XXYYZZ5566」「2ケ」「****」ですから、
こっちのが悩まずにできて早いです。
No.4
- 回答日時:
ユーザ関数を作って使う方法を……
標準モジュールに以下のコードを入れます。
Function fSample(rng As Range) As Long
fSample = 0
Dim sData() As String
sData = Split(Left(rng.Text, InStr(rng.Text, "ケ") - 1), " ")
fSample = CLng(sData(UBound(sData)))
End Function
セルには =fSample(A1) と、入れます。
「ケ」が無かったり、「ケ」の前が文字列だったりした場合は #VALUE!が返ります。
回答ありがとうございました。
お礼遅くなりすいません。
VBAは自分にはまだ難しいので
試すところまでいけませんが
今後の参考とさせていただきます。
No.3
- 回答日時:
たとえば数字が5桁までなら、以下のような数式で数字を抽出することができます。
=RIGHT(SUBSTITUTE(REPLACE(A1,FIND("ケ",A1),100,"")," "," "),5)*1
No.2
- 回答日時:
まずは「ケ」を探します。
個数がせいぜい2桁までだと仮定できれば、「ケ」の前2文字を取り出します。個数が1桁だと頭にスペース
が付きますが、気にせず1を掛けてみます。ちゃんと数値になります
ね。おしまい。
=mid(A1,find("ケ",A1)-2,2)*1
個数が4桁くらいもアリなんだという場合は、「ケ」の位置から5文
字くらい遡った位置をスペースの検索開始位置にします。抜き出す
文字数は「ケ」の位置と「ケ」から5文字以内のスペースの位置の差
ですから、本当は作業列があった方が気楽ですね。
=mid(A1,find(" ",A1,find("ケ",A1)-4),find("ケ",A1)-find(" ",A1,find("ケ",A1)-4))*1
こいつは個数の前の文字列が極端に短いとエラーになります。
回答ありがとうございました。
お礼遅くなりすいません。
うまく抽出できました。
ただ1番目に個数がある場合は抽出できませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) Excel 文字を抽出したい 4 2022/06/22 11:43
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
StrConvでUnicodeに変換出来な...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
VB.NET ListBox内の前方一致で...
-
CString型 全角半角を意識せず...
-
機種依存文字と特殊文字について
-
Access VBAの参照設定(DAO)につ...
-
【Excel VBA】セル内テキストの...
-
TextFieldParserの固定長桁数を...
-
ASC関数
-
VB6のテキストボックスに入力し...
-
VBからID3タグをいじる方法
-
アクセス ステータスバーの文...
-
一番右のスペース以降の文字列...
-
VBA 変数名に変数を使用したい。
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
DataTableに特定のフィールドが...
-
日付と文字列を条件としてDLook...
-
手動または分散トランザクショ...
-
VB.NETの配列にExcelから読み込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CString型 全角半角を意識せず...
-
EXCELのVBAでLenB関数について
-
ファイル名の一部削除について
-
文字列から、null値を除去する方法
-
TextFieldParserの固定長桁数を...
-
StrConvでUnicodeに変換出来な...
-
一番右のスペース以降の文字列...
-
VBScriptで半角カナと半角英数...
-
【Excel VBA】セル内テキストの...
-
アクセス ステータスバーの文...
-
「シフトJIS X 0213」形式の文...
-
WSTRINGとは?
-
エクセルで13,410円を数値の134...
-
VBからID3タグをいじる方法
-
VB6のテキストボックスに入力し...
-
HEX
-
指定バイト目を取り出すにはど...
-
C言語とWin32APIで全角かなの...
-
vb2008 MIDB関数
-
ASC関数
おすすめ情報