システムwiki

セルから英数字を抽出する方法

WaseemA 解決済 最終更新日:2021-06-14 17:00

こんにちは

どなたでも私が下記の解決を助けます.私は下記のB、BAFL、BAFから始まる異なるコードを持つデータを持っています、私はセルから式を介して抽出したいです.お知らせください.

サンプルはそのままです.強調表示されている赤を抽出する必要があります.

参考
SANAM MUNAWAR支店スタッフB8536Adnan Khan BM 12214
Muhammad Abid BdoB6267IMRAN BUTT TL 20805
ファイザンIQBAL DBOB6998SYED ATIF HASSAN TL 17321
Aレイム支店スタッフ20771 Hamid Ihsan BMBAF0135
ZAIN UL ABIDIN支店スタッフBAFL5541 FAWAD NAEEEEEM BUT BM 12050

返信リスト(回答:10)

4 #
RonRose

これが正規表現を使用した別のUDFです.必要な場合は、必要な前のアルファ文字列がパターン内のパイプ区切りグループに含まれているため、必要に応じて新しいプレフィックスを追加するのに便利です.

オプション
関数bnums(範囲としてのRG)文字列としての
オブジェクト、MCとしてのムクset re= createObject( "vbscript.regexp")
Re
.pattern= "\b(?:b|baf|bafl|bal)\d +\b" .ignorecase= true 'またはfalseの場合はfalse
.test(rg)= trueの場合
MC=.execute(RG)を設定します BNUMS= MC(0)

の場合は終了

終了関数

9 #
BobUmla

ユーザー定義関数:

関数getb(範囲としてのRG)文字列として
temp= rg&"" "" " i= 1からLen(RG)への
"B#"のような中MID(RG、I、2)の場合
J= INSTR(MID(TEMP、I)、 "")
getb= mid(rg、i、j)
終了機能

の場合は終了 MID(RG、I、3)=「BAF」の場合は
J= INSTR(MID(TEMP、I)、 "")
getb= mid(rg、i、j)
終了機能

の場合は終了 次の
終了関数

その後、code= getb(a1)と塗りつぶします.

応答9# ->にスキップ
10 #
WaseemA

ありがとう、やるべき処方はあります、私はVBA&マクロの専門家ではありません

応答10# ->にスキップ
8 #
BobUmla

これを行うための式は、それが式で行うことができれば非常に長くなるでしょう.マクロの専門家である必要はありません.次の手順に従ってください:

  1. ALT/F11
  2. を押す
  3. 挿入/モジュール
  4. 送信したコードを貼り付け、 "関数getb...
  5. Alt/Qを押します(Excelに戻ってください)
  6. enter= getb(cell参照)、= getb(a2)、そしてあなたはあなたの結果を持っています.
応答8# ->にスキップ
7 #
WaseemA

どうもありがとうございました、本当に仕事、本当にあなたのサポートに感謝します、

コードにもう1つのオプションBALを追加しようとしていますが、結果を達成できなくなりましたが、以下のセル

MASOOOD IQBALBAL0255huma siraj bm 22180

関数getb(範囲としてのRG)文字列として
temp= rg&"" "" " i= 1からLen(RG)への
"B#"のような中MID(RG、I、2)の場合
J= INSTR(MID(TEMP、I)、 "")
getb= mid(rg、i、j)
終了機能

の場合は終了 MID(RG、I、3)=「BAF」の場合は
J= INSTR(MID(TEMP、I)、 "")
getb= mid(rg、i、j)
終了機能

の場合は終了 mid(RG、I、4)= "BAL"j= INSTR(MID(Temp、I)、 "")getb= mid(Rg、i、j)出口関数の場合は終わります
次の
終了関数

RGSD

waseem

応答7# ->にスキップ
5 #
BobUmla 1

関数getb(範囲としてのRG)文字列として
temp= rg&"" "" " i= 1からLen(RG)への
「B#」のような中MID(RG、I、3)の場合
J= INSTR(MID(TEMP、I + 1)、 "")
getb= mid(RG、i + 1、j)
終了機能

の場合は終了 MID(RG、I、4)= "BAF"の場合は
J= INSTR(MID(TEMP、I + 1)、 "")
getb= mid(RG、i + 1、j)
終了機能

の場合は終了 MID(RG、I、4)= "BAL"の場合
J= INSTR(MID(TEMP、I + 1)、 "")
getb= mid(RG、i + 1、j)
終了機能

の場合は終了 次の
エンド機能

応答5# ->にスキップ
1 #
WaseemA

こんにちはボブ

ANBO関数でもっと助けが必要な場合は、「OK」を追加したいです.

「BAF」または「BAF」BAF「BAZ」スペース、またはスペースなし.下のようなデータ

データ
Gozanfar Ali BDO BAF1122 AHS RAFIQUE BM 10739
MUSAM RAFIQUE BAF 8866 Shehla Imran LMS 16862
Jawad Ur Rehman Bow-6255 Syed Arsu BM 5855
Muhammad Abid BDA B6267 Butty TL 20805
S Farmhad Shah B8748
漢字BDA BM-0987 MAIDA AWAN BM 20971
Arslan Hider BDO BAFL4433 Rashid BM 18503
M Ehtisham BDO BAFL 5138 Gulam Moh DIN TL 21516
Muhammad Adidel Bafl-5138 Timur Sydque Tl B5560<
Jamil Kashif BRDA BAL3670脅当されたTL 21353
カラアリBDA BD 5324アーサーTL 21685
Warda氏BDO Budhoy 909999090909 9099909090909 90999090909 9099909909 909909 909909 JAJ Ahmed TL 21383
QAMMAR ABBAS BDO 5599 M WASWIR BM 19773
Akhter Ali BDO 5934 Adan 3501

PreSeeサポート

応答5# ->にスキップ
6 #
WaseemA

ありがとうBob

問題は解決されました.

応答6# ->にスキップ
2 #
PeterAt

そしてここで別のものですが、おそらくRonのコードと同じくらい短くはありません.

関数getcodes(範囲としてREF)文字列

DIM X、Y、I、J、L

y=配列( "b#"、 "baf"、 "bafl"、 "bal")

X=分割(REF、 "")

i= LBound(x)からUBound(x)

j= LBound(y)からUBound(y)

L= Len(y(j))

左(x(i)、l)の場合、

getCodes= x(i)

出口関数

の場合は終わります

次のj

次のi

終了関数

応答2# ->にスキップ
3 #
WaseemA

ご協力ありがとうございました.

RGDS.