|
>教えていただいたコードで、
>該当する文字がないだけのかもしれないのですが、数学および英語の平均点
>に関係なく、ただ指定したいくつか文字列が書かれている行を抽出することはできるのでしょうか?
>これは数学と英語の平均点の上限、下限を指定するセルを未入力
>にしておくだけは、結果が抽出されないようなのですが。
>あと探したい文字列の指定なのですが、
>E2かつE3となっていくのでしょうか、それとも、それともE2またはE3となるのでしょうか?
>どちらにも変更できればうれしいのですが。
此れは、「b) 例、名前やコメントの中で、例えば「鈴木」という名前がある行を抽出」
の事を言っているのでしょう?
この、コード修正では、数学と英語の平均点は全く見て居ません
「氏名」vntField(0)若しくは、「自由コメント」vntField(4)に指定の文字列が在る場合に
抽出する様にして在ります
ただ、前に此方から質問した、「自由コメント」の「,」の問題なのですが?
「自由コメント」のフィールドは「"」で括られた中に「,」が在るのでしょうか?
もし、上記の様に成っていれば、コード上、区切り文字の「,」とデータの「,」と見分けているので
フィールド数の増減は無いのですが?、上記の様に成っていない場合、
「自由コメント」のフィールドが2つ成ったり3つに成ったりするのを考慮する必要が有ります
また、或る文字列が、全フィールドの中に在るのかどうかで善いのなら、以下の様に
フールドに分割されたもので探すのでは無く、分割前のレーコードから探す事も出来ます
'フィールド内で改行が無い場合
If Not blnMulti Then
If vntField(0) <> "" Then
'配列変数vntFieldは、vntField(0):氏名、vntField(1):クラス
'・・vntField(5):数学の平均点、vntField(6):英語の平均点と成ります
'レコード中に、例えば「鈴木」という名前がある行を抽出
For i = 1 To UBound(vntMark, 1) - 1
'名前若しくはコメントの中に指定した文字列在る場合
If InStr(1, strRec, vntMark(i, 1), vbBinaryCompare) > 0 Then
'Forを抜ける
Exit For
End If
Next i
'もし指定文字列が有った場合
If i <= UBound(vntMark, 1) - 1 Then
'合成レコードを出力
Print #dfo, strRec
End If
End If
strRec = ""
Else
|
|