Excel 對黃色單元格求和?
目的:每付一筆款項就會標黃,進度條自動更新支付比例。
方法:試過Alt+F11添加模塊代碼的方法和條件格式相結合,並不理想問題:是否有更簡單的方法,比如sumif=(J2:O2, ??條件為有背景的單元格, J2:O2)對求黃色單元格求和?補充1:有其他實現此目的的手段亦可。謝謝
按你說的要求,用公式函數難以完成。換一個思路吧:插入一個輔助列「已付款次數」,每次付款後,更新已付款次數,用條件格式標註已付款的。已付款對應單元格會根據C列的次數添加單元格底色。效果如下圖製作方法:1、選定D2:L2單元格區域,點擊「開始-條件格式」2、按下圖進行設置條件公式和格式,設置完後點擊確定退出。條件公式為:
=COLUMN(D2)&<=$C2+3
=COLUMN()&<=$C2+3
注意:使用條件格式時一定要注意單元格引用的類型。
3、將D2:L2單元格區域下拉填充至D3:L104、B2的公式為:=SUM(OFFSET(D2,0,0,1,C2))/A2
按下圖設置B列的條件格式為「數據條」
比較簡單的實現方法是,增加一個輔助列,標記狀態,對已付狀態的行SUMIF就可以了
網上搜kpmg excel tools下載並裝上,有專門的顏色單元格求和的插件
標黃後求和的需求,標準Excel公式無法做到,除非用VBA的自定義函數。
Input一個Range,取Cells.Interior.ColorIndex判斷是否要SUM的對象,用VBA實現並不難。但是通用性很差,外部數據稍微改一下就函數返回結果就不正常了。所以我不建議用VBA來實現。這個問題你逆向思維一下。為什麼不設計成,標識輔助單元格之後求和並自動標黃呢?用了輔助行之後,使用簡單的Sumproduct就解決問題了。而且因為輔助行的數值正好也是布爾值,所以條件格式連if都不用寫,直接用offset函數就行了。
至於應用範圍就是求和行的目標單元格了。至於輔助行,如果覺得有礙觀瞻的話看,可以把他們隱藏掉。另外輔助行和求和行沒有必要做掉一行夾一行的,可以做成塊狀的,條件格式和Sumproduct的行偏移量放大一點就行了,這樣擴張性會比較好。至於VBA的實現方法,我簡單做了個自定義函數,代碼如下
具體使用方法和SUM函數類似。按照你的業務邏輯,如果第一個單元格沒有顏色的話,無條件返回0,如果第一個單元格有顏色,後面的單元格的顏色和第一個顏色一致,返回這些單元格的合計。
但是,因為是自定義函數,即使加了Application.Volatile,在單元格該顏色的情況下不能自動刷新,需要手動enter一下。
Public Function SUM_BY_COLOR(input1 As Range)
Application.Volatile
mySUM = 0
If input1.Cells(1, 1).Interior.ColorIndex = -4142 Then
mySUM = 0
Else
For i = 1 To input1.Rows.Count
For j = 1 To input1.Columns.Count
If input1.Cells(i, j).Interior.Color = input1.Cells(1, 1).Interior.Color Then
mySUM = mySUM + input1.Cells(i, j)
End If
Next
Next
End If
輔助列可以很好解決問題,我換個思路。
利用SUM函數不計算文本格式數字實現加總、單元格標黃。1、條件格式:付款金額區域單元格J2公式=SUM(J2)=0,若為真,填充黃色。格式刷全部付款區域。 "-------文本格式單元格求和為0
2、進度條公式=(H2-sum(J2:Z2))/H2 』------總額-未付金額求已付金額3、每次付款,將對應單元格數值前加『號,變為文本格式。條件格式自動將單元格標黃。缺點是空白單元格也被標黃,可以用其他條件格式取消。也可以調換為未付款單元格加』號條件格式是無法與格式相提並論的,在vb里很難操作。
推薦閱讀:
※Excel學得厲害在什麼行業有用?
※excel書籍?
※如何使用 Excel 透視表?
※excel動態數據地圖製作步驟!?
※Excel中怎樣把類似161029,這樣的數字批量變成2016/10/29這樣的日期格式?
TAG:MicrosoftExcel |