• ベストアンサー

エクセル関数/少し不定形な文章中のコード検索?

エクセルの関数について質問です。 セル内に、例えば 【1月9日(水) 15:30~16:30 3363 東京エンジン科学(株) A 社長 参加 しない する】 という情報があったとします。 この中で、この会社のコード番号である数字4桁(3363)を見つけ出すには、どのような関数を使えばよいでしょうか。 なお、日付や時間などに注意書きが入ることもあり、コードの位置は一定しません。 この検索を1度きりではなく、複数のセルに付いて実行したいのです。 良いアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#176215
noname#176215
回答No.3

はっきりした条件が出せない時は 思いつく限りの例を挙げて欲しいもの です。 =-LOOKUP(1,-MID(SUBSTITUTE(SUBSTITUTE(REPLACE(A1,1,6,""), " ","!")," ","!"),COLUMN(1:1),4))

moyuruomoi
質問者

お礼

標記数式を用いた所、過去のデータは全て処理できているようです。 どうもありがとうございました。 どうしてそうなるのかは、ゆっくり考えて見ます。 お世話になりました。

その他の回答 (2)

noname#140971
noname#140971
回答No.2

【1月9日(水) 15:30~16:30 3363 東京エンジン科学(株) A 社長 参加 しない する】 この文章から 会社コード番号(3363)を見つけ出す手順 1、文章を小さな部品に分解する。 2、部品総数を知る。 3、抽出する特定の部品と他の部品とを区別する条件を知る。 4、全ての部品を条件に合致しているか否かをテストする。 この原則的な手順を採用しないとすれば・・・。 =MID(A1, SEARCH(" ", A1, SEARCH("~", A1))+1, 4) =TRIM(MID(A1, SEARCH(" ", A1, SEARCH("~", A1)), 6)) (1) 先ず、"~" の位置を見つける。 (2) 次に、" " の位置を見つける。 (3) そして、その次にあるであろう会社コード番号を取り出す。 しかし、この手ですと、さらにMid関数が切り取る長さをSerch関数を駆使して求めないといけないかもです。 そこで、多少なりとも、汎用性を確保するのであれば以下のようなVBAを書く必要があるかも知れません。 =GetSuji(A1 & "") Public Function GetSuji(ByVal Moji As String) As String   Dim I    As Integer   Dim N    As Integer   Dim Mojis() As String      Moji = Replace(Moji, " ", " ", , , vbTextCompare)   Mojis() = Split(Moji, " ")   N = UBound(Mojis())   For I = 0 To N     If IsSuji(Mojis(I)) Then       GetSuji = Mojis(I)       Exit For     End If   Next I End Function Public Function IsSuji(ByVal Moji As String) As Boolean   Dim I As Integer   Dim L As Integer   L = Len(Moji)   For I = 1 To L     If InStr(1, "0123456789", Mid(Moji, I, 1), vbTextCompare) = 0 Then       L = -1       Exit For     End If   Next I   IsSuji = IIf(L < 0, False, True) End Function

moyuruomoi
質問者

補足

時間とコードの間に注記情報が入る事があるので、ちょっと無理かもしれませんね。 【区切り位置】を実施後に手作業で再処理しているのですが、一括処理できないかなと思って相談いたしました。 数字だけを対象とするワイルドカードがあれば、4桁のコードを見つけることが出来そうな気がするのですが。。。 VBAは。。。今度勉強します。。。すみません。

  • pbforce
  • ベストアンサー率22% (379/1719)
回答No.1

この情報はひとつのセルにありますか?大体スパースごとにセルに入っていますか? ひとつのセルにあるならば、Find関数かSearch関数で何とかなりそうですが・・・

moyuruomoi
質問者

補足

この情報は、1つのセルに入っています。 同様な情報(必要とするコード情報はそれぞれ違います)がいくつもあり、それらが各々1つのセルに入っています。 【区切り位置】で一括して分けようとしても、スペースがセル毎に違ったりするので、綺麗に揃えられません。 よろしくおねがいします。 申し遅れましたが、当方は素人と考えていただいて結構です。

関連するQ&A