2016-06-07 62 views
0

enter image description here0值和空单元格上的Excel

你好脚本,我不是使用VBs的专家..我有一个问题要问你。

我正在处理2(.csv)文件(其中一个是参考)。 所以,我想比较第二个文件上的值与“参考”文件上的值通过处理每个表上的表(相同的列,只有一些单元格值不同)

问题是,当我'在'ref'文件中有一个“O”值,在另一个文件中有一个“空单元格”,如果相同,我会说比较的结果(因为我已经理解了VB的empty = 0,因为任何未初始化的变量都是0作为价值。) ,这就是我的vbs代码没有区别“0”值单元格和空白单元格的原因.. 嗯,我问你是否可以给我一些建议 在我看来,我认为这是正确的补充:

**run_val = "Empty_CELL"** 

**ref_val = "Empty_CELL"**  

在处理表格之前,为了赋予单元格的默认值,然后与0的 进行区别,但仍然不确定,我不知道语法是否正确。

有人可以提供他的宝贵意见吗?

+0

请问您可以发布您的代码吗? –

+0

http://www9.0zz0.com/2016/06/07/11/782086843.png 谢谢 – bben147

回答

0

未初始化的VBScript变量为Empty;计算中的空值“count”为0或“”。见here

>> Dim e 
>> WScript.Echo CStr(IsEmpty(e)), TypeName(e), CStr(e = Empty) 
>> WScript.Echo e + 1 + e 
>> 
True Empty True 
1 

因此,使用IsEmpty()捕获空单元格值。

更新WRT评论

我解决了这个问题

的问题是,当我在“裁判”文件中的“O”值和 “空单元格”在另一个文件中,如果 相同(因为我已经理解VB的empty = 0,因为任何 未初始化的变量的值为0),所以我评论比较的结果。这就是我的代码不能在“0”值单元格和空白之间做出区别细胞

显然,这是从

不同,使不同 “0” 之间 “”

对于这一点,只要看看:

type 37673790.vbs 
Option Explicit 

Dim n : n = 0 
Dim s : s = " " 
If s = n Then 
    WScript.Echo "Surprise" 
Else 
    WScript.Echo "Not s = n" 
End If 

cscript 37673790.vbs 
Not s = n 

>> a = Array(Empty, 0, "", " ") 
>> For Each e In a 
>>  WScript.Echo CStr(IsEmpty(e)) 
>> Next 
>> 
True 
False 
False 
False 

应停止unbased猜测WRT

的差异不会在环路中可以看出

更新II:

所以它仍然是是否“0比空白单元格是不同的” ...

我最后一次尝试:

Option Explicit 

Dim a : a = Array(Empty, 0, "", " ") 
Dim i, j 
For i = 0 To UBound(a) 
    For j = 0 To UBound(a) 
     WScript.Echo i, j, Cmp(a(i), a(j)) 
    Next 
Next 

Function Cmp(a, b) 
    If VarType(a) <> VarType(b) Then 
    Cmp = "type diff (" & TypeName(a) & "<->" & TypeName(b) & ")" 
    Else 
    If a = b Then 
     Cmp = "val equal" 
    Else 
     Cmp = "val diff (" & Join(Array(a, b), "|") & ")" 
    End If 
    End If 
End Function 

输出:

cscript 37673790.vbs 
0 0 val equal 
0 1 type diff (Empty<->Integer) 
0 2 type diff (Empty<->String) 
0 3 type diff (Empty<->String) 
1 0 type diff (Integer<->Empty) 
1 1 val equal 
1 2 type diff (Integer<->String) 
1 3 type diff (Integer<->String) 
2 0 type diff (String<->Empty) 
2 1 type diff (String<->Integer) 
2 2 val equal 
2 3 val diff (|) 
3 0 type diff (String<->Empty) 
3 1 type diff (String<->Integer) 
3 2 val diff (|) 
3 3 val equal 
+0

但是,在我的情况下,我正在寻求区别“0”和“” 如果我使用是@Empty,在循环中不会看到差异。 所以,我认为,通过给所有单元格默认值然后进行比较来处理表格之前,应该会发生变化。如果我使用IsEmpty(),我会捕获空单元格值,但也是“0”值..它不是目的.. – bben147

+0

非常感谢.. 我明白你在说什么,但似乎我们不是在谈论同一个问题。 我的问题是,当我的代码开始处理我的2 excel文件,以查看它的单元格值是否有任何区别时,它不能识别0与空白单元格不同。 我的问题是要知道什么以便可以注意到差异。 对于两个文件,例如(A12)要比较的两个单元格,如果ref文件的单元格'A12'为另一个文件的“0”和“A12”文件是一个空白的单元格..然后,我想注意到这是一个错误'报告日志' http://urlz.fr/3GCc – bben147

相关问题