2012-06-26 62 views
0

我的目標是:將目錄中的文件名與電子表格中的名稱進行比較。如果匹配,則我希望將該名稱的相應帳號附加到文件名。如何將MS Excel 2010中的名稱與文件名進行比較?

我已經使用dir命令檢索目錄中的所有文件名,然後將該列表粘貼到Excel電子表格的列中。

我現在有4列:帳號,姓氏,名字和文件名。這裏的主要問題是文件名不一致。他們的形式是「姓氏,姓氏日期」,但它們的形式是「史密斯,約翰010112」,「史密斯,J. 010112」,「史密斯J 010112」。這意味着,當涉及到名字時,我只會比較字符串的第一個字母。

所以基本上,對於每個文件名我需要檢查姓氏與姓氏列。如果找到匹配項,那麼我需要檢查文件名firstname的第一個字母與匹配姓的同一行中firstname的第一個字母。如果這也是匹配,那麼我需要獲取該行中的帳號並將其附加到文件名。

我該怎麼做?我對Excel函數非常陌生,但是我對Java和C語言編寫的一些大學課程有一點經驗。

+0

可能是值得的[Excel的VBA]標籤 –

+0

你會怎樣想對付的'史密斯,J'爲'約翰Smith'和'傑克·史密斯' –

回答

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 

希望這會有所幫助。

+0

在單元格中使用該功能時,我需要輸入什麼參數? – CountDerp

+0

在函數名稱中包含參數。所以爲了姓氏,Fisrt名稱,文件名稱,帳號。所以公式看起來像= AppendFileName(「Smith」,「John」,「Smith,J 010112」,「#123」)。只需將名稱替換爲它們引用的單元格即可。 – Rory

+0

這似乎沒有工作,當我輸入正確的參數時,它總是給我False。 – CountDerp

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 SmithJohn Smith如此。

快照

enter image description here

:式中

A2&"-"&D2部分添加Ac. NoOld Filename。如果你想Ac. No到底要添加然後更改上面D2&"-"&A2

+0

謝謝,但這只是給了我#VALUE! – CountDerp

相關問題