0

私の目標は、ディレクトリ内のファイル名をスプレッドシート内の名前と比較することです。一致する場合は、その名前に対応するアカウント番号をファイル名に追加します。

dir コマンドを使用してディレクトリ内のすべてのファイル名を取得し、そのリストを Excel スプレッドシートの列に貼り付けました。

これで、アカウント番号、LastName、FirstName、および filename の 4 つの列ができました。ここでの主な問題は、ファイル名が一貫していないことです。それらは「姓、名の日付」の形式ですが、「スミス、ジョン 010112」、「スミス、J. 010112」、「スミス J 010112」の形式で異なります。これは、名に関しては、文字列の最初の文字のみを比較することを意味します。

したがって、基本的に、各ファイル名について、姓を姓の列と照合する必要があります。一致が見つかった場合は、ファイル名の名の最初の文字を、一致する姓と同じ行の名の最初の文字と照合する必要があります。これも一致する場合は、その行のアカウント番号を取得して、ファイル名に追加する必要があります。

どうすればこれを行うことができますか?私は Excel 関数についてはまったくの初心者ですが、大学のクラスで Java と C のコーディングを少し経験しています。

4

2 に答える 2

1

列には既にファイル名があるため、Excel 数式を使用して残りを解決できます。

=IF(SEARCH(B2&", "&LEFT(C2,1),D2,1)>0,A2&"-"&D2,IF(SEARCH(B2&" "&LEFT(C2,1),D2,1)>0,A2&"-"&D2,""))

Jake Smithこの式は と の両方に当てはまりますJohn Smith

スナップショット

ここに画像の説明を入力

:

A2&"-"&D2式の部分は に を追加しAc. NoますOld FilenameAc. No最後に追加したい場合は、上記を次のように変更しますD2&"-"&A2

于 2012-06-27T05:41:53.153 に答える
1

一貫性のない文字列を適切に処理するのは難しい場合があります。文字列パターンが例の外で変わらない限り、一致する姓と名の頭文字を特定できる関数を次に示します。それをモジュールに追加すると、式 =AppendFileName をセルに入力してアクセスできます。

Public Function AppendFileName(ByVal LName As String, ByVal FName As String, ByVal FileName As String, ByVal AccN As String) As String

If LName = Left(FileName, Len(LName)) Then
   If Mid(FileName, Len(LName) + 1, 1) = "," Then   'Check if the string contains a comma
       If Mid(FileName, Len(LName) + 3, 1) = Left(FName, 1) Then
           AppendFileName = FileName & " " & AccN
       End If
   Else 'If no comma then assume just one space
       If Mid(FileName, Len(LName) + 2, 1) = Left(FName, 1) Then
           AppendFileName = FileName & " " & AccN
       End If
   End If
End If

If AppendFileName = "" Then AppendFileName = False

End Function

このコードの周りにループを作成して、すべてのファイルと名前を調べ、dir 関数で自動化できます。

Dim x as integer, DirFile as string

DirFile = Dir(Path)

Do While DirFile <> ""
x = x + 1  'To track how many files, and to assign variables as in below line of code
'Set each string variable like FName = Range("A1").offset(x,0).value
'Then assess the the names and file names with the If statements above

'Do something with appended FileName

DirFile = Dir
Loop

お役に立てれば。

于 2012-06-27T02:24:00.540 に答える