-1

私は VBA や Python でのプログラミングの経験はありませんが、学習しています。ab/c/defg/0123/456可変長の文字列 (テキストと数値) 内に非常に特定の文字列を含む Excel ファイルがあります。変数文字列は、常に電子メールの件名ヘッダーにあります。目的のために、これを抽出して優れたものにしました。

私が達成したいのはab/c/defg/0123/456、Excelファイルで文字列を見つけて、その特定の文字列を同じExcelの同じ行の空のセルにコピーすることです。文字列が見つからない場合、セルは空のままになります。より複雑にするために、文字列はab/c/defg/**123**/456またはバックスラッシュがスラッシュのように表示される場合もあります。

Excel では、関数 split、MID、left、right は、文字列が文字列内でランダムに表示される可能性があるため、役に立ちません: 次のようなもの:

行 1: ab/c/defg/0123/456 blablalbla 2012 年 3 月 10 日 - 2012 年 5 月 11 日 - blablabla。
行 2: blablalbla 04/10/2012 - 01/11/2012 - blablabla blablabla,blablabla blablabla ab/c/defg/0123/456.
行 3: blablalbla ab/c/defg/0123/456 blablalbla
行 4: blablalbla 13/10/2012 - blablabla
行 5: blablalbla; ブラブラブラ ブラブラブラブラブラブラ ブラブラブラ ab/c/defg/0123/456 - ブラブラブラ 1234456

結果は次のようになります: cd
row1: ab/c/defg/0123/456 blablalbla 03/10/2012 - 05/11/2012 - blablabla. ab/c/defg/0123/456
など....
行 4 列 d は値なし/空になります

ファイルには約が含まれています。9000 行ですが、別のメールボックス/Excel ファイルを分析するとさらに大きくなる可能性があります。

何かご意見は?

4

1 に答える 1

0

まず、おそらく最良のアイデアはRange.Findメソッドを使用することです。文字列が見つかった場合は情報を提供し、文字列が見つかった範囲/セルを返します (存在する場合)。私があなたに警告すること-メソッドが必要と.Findしない可能性のある追加のパラメーターには注意してくださいが、最終的にはそれらを使用する必要があるようです.

ここにメソッドの説明へのリンクがあります。そこにある例は非常に便利です。さらに.Range.FindNext、プロパティも確認してください。

機能を完全にサポートしているため、マクロレコーダーでいくつかの経験をすることができ.Findます.

調査結果がシートのどこにあるか、どのセルにあるかが最終的にわかっている場合は、行内の任意のセルに簡単にアクセスできます。右から見たときの最初の空のセルは、次のようになります。

Dim rngFound as Range 
'if rngFound represent cell where is your string
'then first free cell from the right:
Dim rngFreeThisRow as Range
Set rngFreeThisRow = Cells(rngFound.Row, Columns.Count).End(xlToLeft).Offset(0,1)

スラッシュとバックスラッシュに関する注意事項。検索を数回実行する必要があり、そのたびに「検索するデータ」を変更する必要があります。たとえば、次のようになります。

  1. 検索できる最初のステップでab/c/defg/123/456(完全一致の場合)
  2. 次のステップで見つからない場合は、検索できますReplace("ab/c/defg/123/456". "/", "\")
  3. ただし、文字列に何らかのパターンがある場合は、*and など?の置換マークを使用する方がよいでしょう。ab?c?defg?123?456また ab?c?defg?*123?456
  4. 等々...
于 2013-03-28T23:09:27.193 に答える