返回列表 上一主題 發帖

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

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

本帖最後由 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)

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


因為OFFICE版本問題,之前的附件出現錯誤,現附上正確的,請教大大指導,謝謝!
test1.rar (626.37 KB)

TOP

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

AJ5:
=IF(($C5+$D5)*($AE5+$AF5)=0,"",IF(($C6+$D6)*($AE6+$AF6),"    *",AG5-LOOKUP(,0/(AJ$4:AJ4=""),AG$4:AG4)))


若要的是這個效果,其它欄公式自行去套~~
這用VBA反而太繁複了!

TOP

回復 3# 准提部林
謝謝准提部林版大!

如果X5的條件改為:
=IF(AND($AO5<>0,$AP5<>0,$U5<>0,$V5<>0),"    *",IF(AND($AO5<>0,$AP5=0,$U5<>0,$V5<>0),"    *",IF(AND($AO5=0,$AP5<>0,$U5<>0,$V5=0.6216),"    *",IF(AND($AO5<>0,$AP5=0.6216,$U5=0,$V5<>0),"    *",IF(AND($AO5=0,$AP5<>0,$U5<>0,$V5=0),"    *",IF(AND($AO5<>0,$AP5=0,$U5=0,$V5<>0),"    *",IF(AND($AO5<>0,$AP5<>0,$U5<>0,$V5=0),"    *",IF(AND($AO5<>0,$AP5=0,$U5<>0,$V5=0),"    *",IF(AND($AO5=0,$AP5<>0,$U5=0,$V5<>0),"    *","")))))))))

請問如何套用在版大的公式中,謝謝!

TOP

回復 4# donod

這麼多 if , 用 + 即可:(任一成立)
=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+$AP5)<>0,($U5+$V5)<>0)已包含其中幾個條件,
請自行再審酌各條件, 能省則省之~~

TOP

回復 5# 准提部林

謝謝版大回覆,其實是想代入版大的公式:
=IF(($U5+$V5)*($AO5+$AP5)=0,"",IF(($U6+$V6)*($AO6+$AP6),"    *",W5-LOOKUP(,0/(X$4:X4=""),W$4:W4)))

TOP

本帖最後由 donod 於 2015-11-4 22:39 編輯

由原先
X5=IF(AND($U5+$V5<>0,$AO5+$AP5<>0),"    *","")

改為
X5=IF(AND($AO5<>0,$AP5<>0,$U5<>0,$V5<>0),"    *",IF(AND($AO5<>0,$AP5=0,$U5<>0,$V5<>0),"    *",IF(AND($AO5=0,$AP5<>0,$U5<>0,$V5=0.6216),"    *",IF(AND($AO5<>0,$AP5=0.6216,$U5=0,$V5<>0),"    *",IF(AND($AO5=0,$AP5<>0,$U5<>0,$V5=0),"    *",IF(AND($AO5<>0,$AP5=0,$U5=0,$V5<>0),"    *",IF(AND($AO5<>0,$AP5<>0,$U5<>0,$V5=0),"    *",IF(AND($AO5<>0,$AP5=0,$U5<>0,$V5=0),"    *",IF(AND($AO5=0,$AP5<>0,$U5=0,$V5<>0),"    *","")))))))))

版大的公式如何改寫,謝謝!

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

回復 8# 准提部林

謝謝版大回覆!

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

test2.rar (751.57 KB)

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

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題