我只花了一天时间来弄清楚为什么公式无法按预期工作。我试图创建一个从外部来源提取数据的表。
收集数据X =周期(文本),Y =代码(数字),Z =数量(当前) 第一行= Y,第一列= Y,数据= Z 数据是按期间和代码收集的。如果在该范围内找不到代码,则该代码将添加到第一行的下一个可用单元格中。
我想以3位数字的形式显示代码,因此我格式化了包含代码(VBA)的范围。Numformat=“ 000”
我想将代码显示为3位固定代码,因此我应用了VBA指令将范围格式化为.NumberFormat = "000"
。
导入新的数据行时,将检查表中是否已存在代码。如果不是,则将代码添加到第一行的下一个可用空白单元格。以下功能用于此目的:
Public Function SearchValCol(lngSearch) As Long
'Search a a specific value in a column and return the column number if found.
Dim Rng As Range
With ws_per_tot.Range("1:1")
Set Rng = .Find( _
What:=lngSearch, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
Lookat:=xlWhole, _
searchorder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
End With
If Not Rng Is Nothing Then
SearchValCol = Rng.Column
End If
End Function
现在,将单元格格式设置为“ 000”时,发生了一些奇怪的事情。当单元格的格式设置为“标准”时,找到了代码,而当单元格的格式设置为“ 000”时,则找不到。此外,如果应用格式“ 000”,Excel将显示使用“特殊格式”
我读到在格式化单元格中查找值存在问题,并且今天也引起了我的不快。我强烈希望禁用特殊的位置格式。我将使用这些的可能性为0.0001%。有人有主意吗?
Art。
答案 0 :(得分:2)
它的文档记录不充分,但是据我观察,对于LookIn
参数,xlValues
检查显示的内容,而xlFormulas
检查公式的内容酒吧。
因此,如果更改为LookIn:=xlFormulas
,则无论单元格的格式如何,都应该能够执行.Find
。
我不知道为什么输入000
格式会导致“格式单元格”对话框选择台湾特殊格式。我认为这是台湾的一种特殊格式。似乎Excel中的某些内容发生了变化,可能是一个错误,如果您在其他区域设置中输入了与特殊格式相对应的数字,则“格式单元格”对话框将切换到该数字。
我希望他们能解决它。在此之前,如果有问题,您可以使用区域特定的格式。例如,在美国,您可以使用[$-en-US]000
代替普通的000
。