我在將一個字符串輸入到excel中的一個循環中遇到問題。我從可以是任意長度的文本文件中提取數據,但到目前爲止我所使用的所有內容都在100行數據和50000行數據之間。我試圖提取的字符串長度爲4個字符,通常是數字,但可以是字母數字。默認情況下,字符爲0001,0002,0003和0004,但如果他們選擇使用任何其他4個字符,則這完全取決於我們的客戶。在Excel中輸入數據時,我只想輸入唯一值。嘗試使用VBA在Excel中存儲文本文件中的唯一字符串
整個代碼可以給出,但其他一切正常,所以我不認爲這是必要的。如果你這麼認爲,請求,我會編輯它。請記住,我已經嘗試了許多不同的嘗試,並且邏輯似乎從未解決。
結果是包含文本文件中每個值的一長串行。
如果我不得不猜測,這是由於字符串是一個數字,然後excel存儲它只是「2」而不是「0002」,所以我已經格式化整列以顯示4個字符。即使如此,我認爲Excel將它視爲「2」,所以字符串從不匹配數據。
任何幫助表示讚賞。
FileName = Application.GetOpenFilename()
Open FileName For Input As #1
strSearch = "MTRDT"
Do Until EOF(1)
Line Input #1, ReadData
If Left(ReadData, Len(strSearch)) = strSearch Then
MtrdtCount = MtrdtCount + 1
MeterType = Mid(ReadData, 78, 4)
lastrow = Cells(Rows.Count, "G").End(xlUp).Row + 1
MeterTypeTest = True
For Each cell In Range("G3:G" & lastrow)
If MeterType = cell.Value Then
MeterTypeTest = False
Exit For
End If
Next cell
If MeterTypeTest = True Then
Range("G" & MeterTypeCnt) = MeterType
MeterTypeCnt = MeterTypeCnt + 1
End If
Else
End If
Loop
這發帖時是一個錯誤。當我崩潰並詢問時,我正處於編輯的中間。感謝您的幫助,將「'」添加到兩者並將其更改爲If MeterTypeTest然後工作。我試圖將MeterType存儲爲沒有'並沒有測試'的字符串,但得到了和以前一樣的問題。有什麼想法發生了什麼? – Cody
@Cody如果在單元格中輸入「0002」字符串時沒有''',Excel會將其存儲爲數字'2',並且在稍後與'「進行比較時不會匹配0002" '。 (它實際上是將文件中的「0002」與文件「2」進行比較,因爲VBA會將數字「2」轉換爲字符串「2」進行比較)。因此,您需要「 '當存儲數據時,但需要記住'''實際上不是單元內容的一部分,因此您必須檢查文件中的其他數據是否爲「0002」而不是「0002」。混亂?是。 – YowE3K
這就是我正在想的事情。壞事是下一個我必須處理的循環是文本,我可能會在那裏確認問題。感謝您的幫助 – Cody