我遇到一个问题,我的一个循环将字符串输入excel。我从文本文件中提取可以是任意长度的数据,但到目前为止我使用的所有内容都是100行数据和50000行数据之间的任何数据。我试图提取的字符串长度为4个字符,通常是数字,但可以是字母数字。默认情况下,字符为0001,0002,0003和0004,但如果他们选择使用任何其他4个字符,这完全取决于我们的客户。在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
答案 0 :(得分:1)
如果您使用显示的方法输入了所有数据,则Excel无法将数据输入为0002
作为数字2
- 它会将其视为字符串{ {1}}。
但您正在针对"0002"
测试这些值,这意味着您将"'" & Mid(ReadData, 78, 4)
与"0002"
进行比较。
您需要在向数据库输入数据时添加"'0002"
字符,而不是在进行比较之前。所以以下内容应该有效:
'
答案 1 :(得分:0)
我认为将列“G”的numberformatLocal设置为低于标准
Columns("g").NumberFormatLocal = "@"
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