從多個 .txt 檔案中的一個電子表格中尋找多個值

從多個 .txt 檔案中的一個電子表格中尋找多個值

我需要在 17 個 .txt 檔案中找到 60 個唯一值。當我一次收到一兩個值時,這通常是一個簡單的“查找”和複製,這顯然對我來說對這麼大的列表不起作用。

此電子表格包含約 60 個帳號。我需要在 17 個 .txt 檔案之一中找到每個帳號,以便我可以將該帳戶行複製到另一個 .txt 檔案中進行編輯/完成。 .txt 檔案位於 ftp 檔案中,因此我必須小心,不要完全更改 .txt 文件,儘管如有必要,我可以將它們複製到 Excel。

我知道有查找功能,但我對它們還不是很熟悉,也不確定我到底需要什麼。我希望得到一些幫助!謝謝,L

答案1

我已經編寫了一個腳本,您可能會覺得有用。

建立一個名為的資料夾帳戶並將腳本儲存到此處,擴展名為 .vbs。

在accounts資料夾中建立一個名為的資料夾輸入。將所有要搜尋的帳戶檔案複製到輸入資料夾中,它們都應該是.txt 文件,否則將被忽略。

建立一個名為帳號.txt並在單獨的行上列出每個帳號。該腳本應打開每個文件,讀取一行並根據每個帳號進行檢查。搜尋結果儲存在帳戶發現.txt。提供時不提供保修,使用風險自負。希望能幫助你。

' find all occurrances of an account number in a number of files
' place all account txt files into input folder
' accounts_found.txt is created if it is missing
' by 'Robert' 2017 - hereby placed into the Public Domain

' set some Constants here
Const ForRead      = 1
Const ForWrite     = 2
Const ForAppend    = 8
Const OverWrite    = True
Const NoOverWrite  = False

Dim acct_num_list(100) ' max records for the array, num_accounts variable counts them anyway

inputFolderName    = "input\"               ' the folder where the txt files are
outputFileName     = "accounts_found.txt"   ' the output file for matched records
accountsFileName   = "account_numbers.txt"  ' the file which contains account numbers to search for

' = = = Start of Code = = =

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set outFile = objFSO.OpenTextFile(outputFileName, ForWrite, OverWrite)

Set objInputFolder = objFSO.GetFolder(inputFolderName)
Set sFileCollection = objInputFolder.Files

Set accounts_file = objFSO.OpenTextFile(accountsFileName, ForRead)

num_accounts = 0
DO While Not accounts_file.AtEndOfStream
    acct_num_list(num_accounts) = accounts_file.ReadLine
    num_accounts = num_accounts + 1
Loop

accounts_file.Close

For Each objFile in sFileCollection
    If UCASE(objFSO.GetExtensionName(objFile)) = "TXT" then
        Set sourceFile = objFSO.OpenTextFile(inputFolderName & objFile.Name, ForRead)
        Do While Not sourceFile.AtEndOfStream
            curr_line = sourceFile.ReadLine
            For counter = 0 to num_accounts
                if instr(1, curr_line, acct_num_list(counter),1) >= 1 then
                    outFile.WriteLine curr_line
            End If
            Next    
       Loop 
    End If    
Next
' = = = End Of File = = =

相關內容