Board logo

標題: 點選加總 [打印本頁]

作者: myleoyes    時間: 2012-11-27 20:48     標題: 點選加總

各位前輩你們好!
         Sub 獎金()
             [E2] = Selection
             [G1] = "=SUMIF(INDIRECT(""$E$3:$E$300""),$E$2,INDIRECT(""$G$3:$G$300""))"
             [G1] = [G1]'.Value
         End Sub
         問題如附檔說明
         請知道的前輩,不吝賜教謝謝再三!!
作者: stillfish00    時間: 2012-11-28 09:57

回復 1# myleoyes
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. If Target.Count = 1 Then
  3. '選擇的為單一儲存格
  4.     If Not Intersect(Target, Range("E3:E300")) Is Nothing Then
  5.     '選擇的儲存格在E3:E300內
  6.         [G1] = Evaluate("=SUMIF($E$3:$E$300," & Target.Address & ",$G$3:$G$300)")
  7.         '計算公式後傳回G1
  8.     End If
  9. End If
  10. End Sub
複製代碼

作者: Hsieh    時間: 2012-11-28 10:18

回復 1# myleoyes
  1. Sub 獎金()
  2.          [E2] = Selection
  3.          [G1] = Application.SumIf([E3:E300], [E2], [G3:G300])
  4. End Sub
複製代碼

作者: myleoyes    時間: 2012-11-28 22:13

回復 3# Hsieh
stillfish00 前輩!程式OK!謝謝再三!!
偶像前輩!程式也OK!但忽略小弟的要求-請問在不增加E2補助格之下謝謝再三!!
這樣也可以
Sub 獎金()
     [G1] = Evaluate("=SUMIF($E$3:$E$300," & Selection.Address & ",$G$3:$G$300)")
End Sub
再麻煩兩位前輩這個問題如下
  結果L4=K4-K3+5689-12356
Sub Ex()
        [K65536].End(xlUp)(2, 1) = Sheet4.[I1]
        [L3].Copy [L65536].End(xlUp)(2, 1)
        [L65536].End(xlUp)(1, 1) = "=" & [L65536].End(xlUp)(1, 1) & "+" & Sheet2.[AZ19] & "-" & Sheet2.[AZ20]
        Sheet2.[AZ19:AZ20] = ""
        Columns("K:L").EntireColumn.AutoFit
End Sub
作者: stillfish00    時間: 2012-11-29 14:18

回復 4# myleoyes
看不懂你的需求...
[L4]=[K4]-[K3]+5689-12356  ?
作者: myleoyes    時間: 2012-11-29 21:31

回復 5# stillfish00
前輩!不好意思小弟把你弄糊塗??
     應該是這麼想像將L3=K3-K2+Sheet2!$AZ$19-Sheet2!$AZ$20
     按鈕程式複製L3至L4所以
     L4=K4-K3+Sheet2!$AZ$19-Sheet2!$AZ$20
     但是需求是保留K4-K3的公式
     將+Sheet2!$AZ$19-Sheet2!$AZ$20變成值
     現在Sheet2!$AZ$19=5689
     Sheet2!$AZ$20=12356
     所以L4=K4-K3+5689-12356
     因為Sheet2!$AZ$19與Sheet2!$AZ$20是動態值
     因此$AZ$19與$AZ$20不以公式型態呈現必須為值
     如此解釋前輩!明白否?請再賜教辛苦囉!謝謝再三!!
作者: stillfish00    時間: 2012-11-30 00:01

回復 6# myleoyes
幾種方法你參考看看
Sub Ex1_1()  '容易懂
    Dim r As Long
    r = [K65536].End(xlUp).Row + 1
    Range("K" & r) = Sheet4.[I1]
    Range("L" & r) = "=K" & r & "-K" & r - 1 & "+" & Sheet2.[AZ19] & "-" & Sheet2.[AZ20]
End Sub

Sub Ex1_2()   '公式中位址用address取就可以了
    With [K65536].End(xlUp).Offset(1, 0)
        .Value = Sheet4.[I1]
        .Offset(0, 1).Value = "=" & .Address(0, 0) & "-" & .Offset(-1, 0).Address(0, 0) & "+" & Sheet2.[AZ19] & "-" & Sheet2.[AZ20]
    End With
End Sub   

Sub Ex1_3()  '不保留公式算出來也是一樣的
    With [K65536].End(xlUp).Offset(1, 0)
        .Value = Sheet4.[I1]
        .Offset(0, 1).Value = .Value - .Offset(-1, 0).Value + Sheet2.[AZ19] - Sheet2.[AZ20]
    End With   
End Sub
作者: myleoyes    時間: 2012-11-30 21:11

回復 7# stillfish00
前輩!哇!!真甘恩提供如此完整程式...辛苦囉謝謝再三!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)