2016-06-07 65 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

相關問題