2014-04-11 54 views
0

我是這個論壇的新手,並希望得到您對我遇到問題的Excel表的幫助。如何跳過空白值並根據具體的價值進行計算

我需要爲下創建VBA代碼:

我需要根據下面的公式和值Column G列在Column H3摸出規定。 Column F是其中值可能有空白行之列,由於我是新的我不能發佈的實際片的PIC:

=IF(F3=0;(G3*(G5-F5)/G5);IF(F3>0;(G5-F5)))

的問題是,Column F具有基於空間一個特定客戶有多少張發票,我需要的是一些公式或VBA代碼,將空白值考慮在內。

任何幫助將不勝感激

EDIT1:樣本數據SS

EDIT2:代碼我現在有

Sub Check() 
Dim rng1 As Range 
Dim cell As Range 
Dim i As Long 
Set rng1 = Range("F3:F100") 

For Each cell In rng1 
    If cell.Value > 0 Then 
     cell.Offset(0, 5).Value = cell.Offset(0, 1) - cell.Offset(0, 0) 
    ElseIf cell.Value = 0 Then 
     cell.Offset(0, 5).Value = ??????? 
    End If 
Next 
End Sub 

特此我增加了額外的: Sub Ch ECK() 昏暗RNG1作爲範圍 昏暗細胞作爲範圍 昏暗我只要

Set rng1 = Range("F3:F100") 
For Each cell In rng1 
If cell.Value > 0 Then 
    cell.Offset(0, 5).Value = cell.Offset(0, 1) - cell.Offset(0, 0) 
    ElseIf cell.Value = 0 Then 
    cell.Offset(0, 5).Value = `(cell.Offset(0, 1) * ((cell.Offset(2, 1) - cell.Offset(2, 0))/cell.Offset(2, 1)))` 
    End If 
Next 

結束子

在「所示的問題」上方不給我正確的比率

+0

'由於我是新的事實我不能張貼圖片的實際工作表:'只需發佈圖片的鏈接,我們就會從那裏拿走它。 – L42

+0

對不起慢,但不知道你的意思 – Louis

+0

我可以直接發郵件給你的圖片給你 – Louis

回答

1

這是我認爲最好的非VBA解決方案。
我你的數據減少了一半,我懶的打字,看起來象下面這樣:

enter image description here

正如你可以看到我已經在H3這是根據公式添加了一個公式。

=IF(F3<>"",G3-F3,G3*(INDIRECT("G$"&I3)-INDIRECT("F$"&I3))/INDIRECT("G$"&I3))

所不同的是我用INDIRECT動態控制的參考在FG值。

因此,基本上,FG參考依賴於上I值。
我用這個公式在I3得到正確的行參考分別是5,8和17。

=SMALL(IF(F3:F$17<>"",ROW(F3:F$17)),ROW(A$1))

以上是Array Formula使用按Ctrl ++輸入進入
一旦輸入正確,它看起來象下面這樣:

enter image description here

正如我已經說過了,我只是你的data.You所使用的部分可調節範圍大小,以滿足您的需求。
您可以將其製作爲模板並複製並粘貼值。希望這可以幫助你一點。
我不是說VBA不是一個選項,但這是最快的,我可以拿出自動取款機。:)

+0

嗨對不起,如果我使用你的{= SMAL(IF(F3:F $ 17 <>「」; ROW(F3:F $ 17)); ROW(A $ 1)) }我得到列下面的值I: I3 = 3.00 I4 = 4.00 I5 = 5.00 I6 = 6.00 I7 = 7.00 I8 = 8.00 I9 = 9.00 I10 = 10.00 等 – Louis

+0

嗨,我已經試過你的公式向後,向前,顛倒和橫向它不起作用,作爲一個附註我不知道這是否有所作爲,但我使用Excel 2010. – Louis

+0

它應該工作得越多,我也使用XL 2010。此外,我不知道它是否是一個錯字,但它應該是'= SMALL(IF(F3:F $ 17 <>「」; ROW(F3:F $ 17)); ROW(A $ 1))''。然後按ctrl + shift +進入組合。 – L42