返回列表 上一主題 發帖

[發問] 如何回傳相對儲存格之間相減

[發問] 如何回傳相對儲存格之間相減

本帖最後由 donod 於 2015-11-2 15:39 編輯

請教大大,
例子中,有"*"的儲存格提示重複了相對欄位的儲存格,例如例子中X12-X14有"*",提示W12-W14重複了欄位AQ12-AQ14
1) 如果想將一連串有"*"部分的最下一個儲存格(一連串有"*"部分之下有機會再出現一連串有"*"部分或1個有"*"部分),回傳相對儲存格之間相減(以上例子:X14=W14-W11) 及
2) 將只有1個有"*"部分的儲存格,回傳相對儲存格之間相減(例子中:AJ7=AG7-AG6)
(有"*"部分可用其他字符代替的)
再請教大大,VBA如何寫,謝謝!
test1.rar (397.82 KB)

回復 15# 准提部林

快速了很多,很有用,效率也提高了,謝謝准提部林版大教授!

TOP

回復 14# donod


給個參考方案,能用則用,應可事半功倍:
Xl0000082.rar (358.14 KB)

只要在〔第四列〕設好公式,及標記相減值的欄位,程式全自動處理~~

TOP

回復 13# 准提部林
可以了,感謝版大再次教授!
連備註都給我們加上,原本不明白的地方都清楚了!
感恩這兒的大大無私奉獻,謝謝您們!

TOP

本帖最後由 准提部林 於 2015-11-6 11:09 編輯

回復 12# donod

Sub TEST()
Dim R&, x&, y&, H, xR As Range
R = Cells(Rows.Count, 1).End(xlUp).Row ’以A欄檢測最後一筆資料列號
If R < 5 Then Exit Sub
For x = Range("X1").Column To Range("AB1").Column 'X ~ AB 欄
  For y = 5 To R
    Set xR = Cells(y, x)
    If xR = "    *" Then
      If H = "" Then H = Val(Range("W" & y - 1))
      If xR(2, 1) = "" And H <> "" Then
        xR = "=" & Val(Range("W" & y)) & "-" & H
      End If
    End If
    If IsNumeric(xR) Then H = ""
  Next y
Next x

'其它欄位往下加入(規則如上,只有相減值的欄不同) 
End Sub

1.先用公式產生檢查重覆的"    *" 記號
2.再使用vba進行兩值相減
3.以上只示例X~AB欄的做法,其它欄請自行去套入
4.相減值以公式 = ??? - ??? 表現,方便做比對是否正確

TOP

再附上完整的檔案,謝謝大大!
test5a.rar (888.39 KB)
再次說明:
例子中,有"*"的儲存格提示重複了相對欄位的儲存格,例如例子中X12-X14有"*",提示W12-W14重複了欄位AQ12-AQ14
1) 如果想將一連串有"*"部分的最下一個儲存格(一連串有"*"部分之下有機會再出現一連串有"*"部分或1個有"*"部分),回傳相對儲存格之間相減(以上例子:X14=W14-W11) 及
2) 將只有1個有"*"部分的儲存格,回傳相對儲存格之間相減(例子中:AJ7=AG7-AG6)
(有"*"部分是可用其他字符代替的)

TOP

回復 10# 准提部林

感謝版大幫忙,公式已經沒有問題了。
但當數據太多及數據改變,需要很耐時間計算,甚至停下來。

TOP

本帖最後由 准提部林 於 2015-11-5 14:48 編輯

回復 9# donod

疏忽了其間有0值,
LOOKUP(0,0/(Q$4:Q680="") 遇到0即停止,
改為:
LOOKUP(1,0/(Q$4:Q680="")

可選取整張工作表,
將 LOOKUP(, 全部取代成 LOOKUP(1,

TOP

回復 8# 准提部林

謝謝版大回覆!

附件中的綠色部份是改用新條件,紅色部份出錯(Q681,Z681),參考了對上一組有"*"部份,但DELETE上一組有"*"部份就會正確。再請大大指教。

test2.rar (751.57 KB)

TOP

回復 7# donod


=IF(AND($AO5<>0,$AP5<>0,$U5<>0,$V5<>0)+AND($AO5<>0,$AP5=0,$U5<>0,$V5<>0)+AND($AO5=0,$AP5<>0,$U5<>0,$V5=0.6216)+AND($AO5<>0,$AP5=0.6216,$U5=0,$V5<>0)+AND($AO5=0,$AP5<>0,$U5<>0,$V5=0)+AND($AO5<>0,$AP5=0,$U5=0,$V5<>0)+AND($AO5<>0,$AP5<>0,$U5<>0,$V5=0)+AND($AO5<>0,$AP5=0,$U5<>0,$V5=0)+AND($AO5=0,$AP5<>0,$U5=0,$V5<>0)=0,"",IF(AND($AO6<>0,$AP6<>0,$U6<>0,$V6<>0)+AND($AO6<>0,$AP6=0,$U6<>0,$V6<>0)+AND($AO6=0,$AP6<>0,$U6<>0,$V6=0.6216)+AND($AO6<>0,$AP6=0.6216,$U6=0,$V6<>0)+AND($AO6=0,$AP6<>0,$U6<>0,$V6=0)+AND($AO6<>0,$AP6=0,$U6=0,$V6<>0)+AND($AO6<>0,$AP6<>0,$U6<>0,$V6=0)+AND($AO6<>0,$AP6=0,$U6<>0,$V6=0)+AND($AO6=0,$AP6<>0,$U6=0,$V6<>0) ,"    *",W5-LOOKUP(,0/(X$4:X4=""),W$4:W4)))

藍色為[當列]的判斷, 紅色為[下一列]的判斷!

TOP

        靜思自在 : 慈悲沒有敵人,智慧不起煩惱。
返回列表 上一主題