標題:
[發問]
這個可以使用IF公式嗎?
[打印本頁]
作者:
appr
時間:
2012-1-1 18:41
標題:
這個可以使用IF公式嗎?
請各位看看我該用哪種公式才對!!
第一:我現在有一個公式是=SUM(D2+F2-(C2))
第二: 我現在要多增加一個公式是 E2的數值會跟著D2跑 也就是 今天D2 不管是10 , 20 ,21.......
E2的數值會跟著 D2 走 , 然後再帶入到第一個公式去運算!!
請問我該用甚麼樣的公式? 是IF嗎?
請各位幫幫我!!!我已經想不出來該用甚麼了!!!!
作者:
register313
時間:
2012-1-1 18:52
本帖最後由 register313 於 2012-1-1 19:12 編輯
回復
1#
appr
公式1 : =D2+F2-C2 或 =SUM(D2,F2,-C2)
公式2 : E2=D2
E2的數值會跟著D2走,然後再帶入到第一個公式去運算
公式1裡並沒有出現E2 如何把E2代入公式1去運算???
是這樣嗎
公式1 : =D2+
E
2-C2 或 =SUM(D2,
E
2,-C2)
公式2 : E2=D2
作者:
appr
時間:
2012-1-1 21:50
抱歉是我少說了
E2是我多增加的一個假設值 它會先D2的值相互呼應, 也就是說D2 的值或者是E2 只要更動到其中一個
那另外一個值也會更動
假設D2 為 20 E2 應為20 若D2更正為15 E2應立即更動為15
之後再帶入第一個公式中 , 也就是=SUM(D2+F2-(C2))
作者:
register313
時間:
2012-1-1 22:36
本帖最後由 register313 於 2012-1-1 22:49 編輯
回復
3#
appr
D2與E2兩變數之值既然一定相等 為何不只用一個變數呢?
如果一定要D2與E2兩變數連動 那可能一定要用VBA才作的到
Private Sub worksheet_change(ByVal target As Range)
If target.Address = "$D$2" Then
Range("E2") = Range("D2")
End If
If target.Address = "$E$2" Then
Range("D2") = Range("E2")
End If
End Sub
複製代碼
[attach]8985[/attach]
作者:
appr
時間:
2012-1-1 23:47
基本上D2跟E2值是一樣的,是確定的!!!!如果要用同一個變數是可以的!!!
只是差在於E2是D2附屬說明底下的細項!!!如果可以的話我也不想~"~
所以不顯示出來!!!有時候會造成項目上的混亂
哇~~~~~要動用到VBA 那我真的必須好好研究一下!!!感謝各位的幫忙
作者:
lcc_seven
時間:
2012-1-3 17:51
我以前都自己設一個button,但是這樣要按一下才能更新
如果要儲存格的數值即時更新,建議使用自訂函數的方法會比較好
作者:
appr
時間:
2012-1-3 21:38
自訂函數?是要用哪一個??? 抱歉我是真的才又剛開始重學的.....所以滿多不懂得!!!
方便的話,可以再詳細解答一下嗎? 感謝!!!!
作者:
lcc_seven
時間:
2012-1-4 00:40
回復
7#
appr
先在VBA編輯器新增一個模組,把下面的Function貼上
Function E2_equal_D2(SelectValue)
E2_equal_D2 = SelectValue
End Function
點選E2,插入函數,你會發現多一個【使用者定義】選項,點下去就可以看到這個自訂函數 E2_equal_D2
因為有設定引數,所以要把引數指定D2,跟平常使用函數一樣,點一下D2就可以了
你可以試一下,如此D2的數值一改變,E2會隨著改變
原本的 =SUM(D2+F2-(C2)) 依舊可以計算
作者:
appr
時間:
2012-2-19 16:50
不好意思現在才回!!!但我現在才會了......
作者:
appr
時間:
2012-2-23 21:23
回復
8#
lcc_seven
不好意思我想在請問一個問題!!!
現在我的方法是使用lcc_seven 用模組的方法!!!但是為了要更改
我目前的笨方法是使用複製貼上然後在更改名稱!!!
但要直接加到第一個模組裡面卻發生編輯錯誤~"~
但如果用VB的話是該怎麼修改???有點搞不清楚了!!!
另外如果想要跟下面的這個做結合
是直接在往下面加入就好嗎??
Private Sub Worksheet_Change(ByVal Target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(Target, RngA)
Set RngCS = Intersect(Target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
End Sub
複製代碼
那我加入後,還是會發生名稱錯誤!!!
那是需要甚麼的連結名稱嗎?
作者:
register313
時間:
2012-2-23 23:04
回復
10#
appr
工作表模組
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
If target.Address = "$D$2" Then
Range("E2") = Range("D2")
End If
If target.Address = "$E$2" Then
Range("D2") = Range("E2")
End If
End Sub
複製代碼
作者:
appr
時間:
2012-2-24 01:04
回復
11#
register313
謝謝R大的回覆
所以應該是直接接下去而不是先接Private Sub worksheet_change(ByVal target As Range):'(
那如果從第14項開始我要增加成複數的儲存格
是要像第17項的方式下去 , 去做 複製貼上 然後更改成我要的儲存格
那這樣的話,如果太多會不會因此,有時會發生錯誤?
還是說我想太多???
作者:
register313
時間:
2012-2-24 08:09
回復
12#
appr
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If Not RngDE Is Nothing Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
If Not RngED Is Nothing Then 'D2~D4=E2~E4
RngD.Value = RngE.Value
End If
End Sub
複製代碼
作者:
appr
時間:
2012-2-24 21:59
本帖最後由 appr 於 2012-2-24 22:07 編輯
回復
13#
register313
謝謝r大的分享,我已經大概都清楚了!!!只是本於好奇的想法,想再多問幾個問題
那如果是無論是第2,3 項 或是 14,15 項 以及18,20項
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If Not RngDE Is Nothing Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
If Not RngED Is Nothing Then 'D2~D4=E2~E4
RngD.Value = RngE.Value
End If
End Sub
複製代碼
這些都是屬於連接的, 那如果是用跳的一項 ﹝A2,A4,A6﹞的是要怎麼做???
第二個是這整個程式碼 是以 A2的儲存格 加上 數字 等於 C2的 數字合
以及B2的儲存格 減上 數字 等於 C2的數字合
那麼如果我要把B2的儲存格換成C2
那麼 這個程式碼 所出來的結果會在D2:D4顯示
不過A2會變成【 -】號 而我更動的 C2 也是【 -】號 所以出來的答案會都是負的
那我應該是要怎麼做會比較更動會比較好?
另外如果我是想要指定一個儲存格 ,我自己有做一個更動 , 雖然我知道一定是錯的,但還是希望各位過目看看
Private Sub Worksheet_Change(ByVal Target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngC = Range("G2:G4")
Set RngCA = Intersect(Target, RngA)
Set RngCS = Intersect(Target, RngB)
Set RngCD = Intersect(Target, RngC)
If Not RngCA Is Nothing Then
RngCD.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCD.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
End Sub
複製代碼
作者:
register313
時間:
2012-2-24 23:12
回復
14#
appr
問題一 Set RNG = Union([A2], [A4], [A6])
問題二 不了解說明及功能
問題三 不了解說明及功能
作者:
appr
時間:
2012-2-24 23:41
本帖最後由 appr 於 2012-2-24 23:42 編輯
回復
15#
register313
先回答三,在回答二
問題三的說明:原本這個程式碼下是 C2 為最後答案 ,也就是說 A2 若為10 那 C2為8
B2 若為 2
那麼如果要更改C2的儲存格到 G2 該如何怎麼寫起
功能說明: 變動最後答案儲存格
附註:最後的程式碼是我自己照著上面的想法,去試著去打出來的!!
只是看不確定是否正確,想讓大家看看錯在哪?
延續問題3
問題二的說明: 如果把B2 的儲存格變動 到 C2 因 問題3的程式碼的設定為 往後推一個儲存格為答案,故
若 A2 為 4 D2 為 3
C2 為 1
但我試著照上面更動後 卻發現 A2為4的情況下 D2為 -4
若更動後的C2輸入 4 那 D2 為 -4
功能:變動中間的儲存格
作者:
register313
時間:
2012-2-25 00:06
回復
16#
appr
問題3
Private Sub Worksheet_Change(ByVal Target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(Target, RngA)
Set RngCS = Intersect(Target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 6) = RngCA.Offset(0, 6) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 5) = RngCS.Offset(0, 5) - RngCS.Value
RngCS.Value = ""
End If
End Sub
複製代碼
作者:
appr
時間:
2012-2-25 00:48
回復
17#
register313
了解!!我這兩個問題是出在哪裡了!!!感謝R大的回覆耶!!
作者:
appr
時間:
2012-2-27 01:03
回復
17#
register313
不好意思,又出現在了兩個問題想請教一下, 我想要同時讓A2跟著C2以及G2做一樣的動作!!
但每次用好後 ,我的excel就當掉了!!!是程式碼我打錯了嗎?
以及如果想讓 G2可以是自動判別月份 !!! 也就是說 2月份是在G2 當 3月份會自動跳到 H2 這是要怎麼設定????
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If Not RngDE Is Nothing Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
If Not RngED Is Nothing Then 'D2~D4=E2~E4
RngD.Value = RngE.Value
End If
Set RngA = Range("A2:A4")
Set RngCA = Intersect(target, RngA)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 6) = RngCA.Offset(0, 6) + RngCA.Value
RngCA.Value = ""
End If
End Sub
複製代碼
作者:
register313
時間:
2012-2-27 10:13
本帖最後由 register313 於 2012-2-27 10:14 編輯
回復
19#
appr
目前功能如下
[attach]9778[/attach]
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Offset(0, 6) = RngCA.Offset(0, 6) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If Not RngDE Is Nothing Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
If Not RngED Is Nothing Then 'D2~D4=E2~E4
RngD.Value = RngE.Value
End If
End Sub
複製代碼
其餘問題以excel檔案作成範例再加以說明
作者:
appr
時間:
2012-2-27 21:35
回復
20#
register313
想在請問一下,是否可以用自動判別的方法!! 當現在為2月份的時候為 G2 ,當現在為3月份的時候為H2 ,當 現在為4月份的時候.......
或者是說可以用自訂表單的方式 ? 我有用一個自訂表單 !! 但是有哪邊打錯 一直顯示有 End With 沒有 With ???到底是怎麼了????
[attach]9782[/attach]
作者:
register313
時間:
2012-2-27 22:09
回復
21#
appr
Private Sub worksheet_change(ByVal target As Range)
Set RngA = Range("A2:A4")
Set RngB = Range("B2:B4")
Set RngCA = Intersect(target, RngA)
Set RngCS = Intersect(target, RngB)
If Not RngCA Is Nothing Then
RngCA.Offset(0, 2) = RngCA.Offset(0, 2) + RngCA.Value
RngCA.Offset(0, Month(Now) + 4) = RngCA.Offset(0, Month(Now) + 4) + RngCA.Value
RngCA.Value = ""
End If
If Not RngCS Is Nothing Then
RngCS.Offset(0, 1) = RngCS.Offset(0, 1) - RngCS.Value
RngCS.Value = ""
End If
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If Not RngDE Is Nothing Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
If Not RngED Is Nothing Then 'D2~D4=E2~E4
RngD.Value = RngE.Value
End If
End Sub
複製代碼
作者:
appr
時間:
2012-2-27 22:13
回復
22#
register313
(0, Month(Now) + 4)
複製代碼
想請問一下 Month 是代表月份 Now 是代表現在的日期
那+4所代表的含意 是 顯示的位址嗎?
作者:
register313
時間:
2012-2-27 22:23
回復
23#
appr
RngCA在A欄(A2~A4與輸入進貨值之交叉)
若現為1月:RngCA.Offset(0, Month(Now) + 4)= RngCA.Offset(0, 1 + 4)=RngCA.Offset(0, 5)
=A欄向右偏移5欄=F欄
若現為2月:RngCA.Offset(0, Month(Now) + 4)= RngCA.Offset(0, 2 + 4)=RngCA.Offset(0, 6)
=A欄向右偏移6欄=G欄
作者:
appr
時間:
2012-2-27 23:10
回復
24#
register313
我還能說甚麼????
我想得到的 就只有.....
厲害厲害!!!!
作者:
appr
時間:
2012-2-29 22:09
回復
24#
register313
15.Set RngD = Range("D2:D4")
16.Set RngE = Range("E2:E4")
17.Set RngDE = Intersect(target, RngD)
18.Set RngED = Intersect(target, RngE)
19.If Not RngDE Is Nothing Then 'E2~E4=D2~D4
20. RngE.Value = RngD.Value
21.End If
22.If Not RngED Is Nothing Then 'D2~D4=E2~E4
23. RngD.Value = RngE.Value
24.End If
複製代碼
想要請問一下!!!目前這個屬於 雙向!!! 也就是說不管是 對著 D2 或是 E2 輸入都是一樣的
如何才能鎖定一個儲存格 也就是單向的方式???
作者:
register313
時間:
2012-2-29 23:47
回復
26#
appr
單向 D => E 若E更改後會強迫等於D
Set RngD = Range("D2:D4")
Set RngE = Range("E2:E4")
Set RngDE = Intersect(target, RngD)
Set RngED = Intersect(target, RngE)
If (Not RngDE Is Nothing) Or (Not RngED Is Nothing) Then 'E2~E4=D2~D4
RngE.Value = RngD.Value
End If
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)