查看完整版本: 如何在特定格內計算某範圍內符合條件的總和?
頁: [1]

keith7412123 發表於 2016-8-15 08:09 PM

如何在特定格內計算某範圍內符合條件的總和?

如何在特定格內計算某範圍內符合條件的總和?
想知道J4從B4:D11是如何按I4的編號計算出I4在A4:A11所取得的分數總和?

例子:123編號在對應分數下是9+4+9,所有取得22總分






<div></div>

jasonlin7 發表於 2016-8-15 10:11 PM

本帖最後由 jasonlin7 於 2016-8-15 10:18 PM 編輯

將以下的巨集加入此活頁簿的任意模組中:

Function MyFunction01(RNG_Target As Range, RNG_SearchRegion As Range, RNG_SumUpRegion As Range) As Double
    Dim myRNG As Range   
    For Each myRNG In RNG_SearchRegion
        If myRNG.Text = RNG_Target.Text Then
            MyFunction01 = MyFunction01 + Cells(myRNG.Row, RNG_SumUpRegion.Column).Value
        End If
    Next
End Function


然後,在J4儲存格Key入函數:

=MyFunction01(I4,$B$4:$D$11,$A$4:$A$11)

之後,由J4儲存格右下角下拉自動套用公式,完成~



...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

keith7412123 發表於 2016-8-15 10:57 PM

jasonlin7 發表於 2016-8-15 10:11 PM static/image/common/back.gif
將以下的巨集加入此活頁簿的任意模組中:




謝謝你..但我只是個初學的用家..如何將"巨集加入此活頁簿的任意模組中"是什麼意思?{:54:}

jasonlin7 發表於 2016-8-15 11:15 PM

本帖最後由 jasonlin7 於 2016-8-16 12:18 AM 編輯

開啟巨集的方法:
Excel檔案 -> 選項 -> 自訂功能區
再右邊欄中找到 "開發人員",將其勾選,確認後離開。
此時會看到Excel活頁簿上方欄除了檔案常用插入之外,多了開發人員

將程式貼入模組中的方法:
1.點選開發人員
2.點選Visual Basic
3.在跳出視窗內左邊找到VBAProject小視窗
4.在VBAProject小視窗中,滑鼠右鍵,插入,模組
5.此時右邊出現空白編譯視窗,此為新增的模組,預設的名稱是Module1
6.將我給你的程式碼貼入空白編譯視窗

使用自訂函數的方法:
1.將編譯視窗縮小或關閉,回到Excel儲存格
2.將函數Key入儲存格
3.下拉套用函數

記得Excel要存檔,否則下次進入該文件,還是沒辦法使用巨集的功能。
記得存成.xlsm(建議)或.xls,因為Excel有些格式無法接受有巨集的檔案。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

jasonlin7 發表於 2016-8-15 11:32 PM

本帖最後由 jasonlin7 於 2016-8-16 02:19 AM 編輯

VBA程式俗稱巨集,英文為Macro。
編譯的地方在Excel的開發人員下的VBE視窗,
使用目的是利用程式控制Excel做自動化的文件處理,包括開啟,存檔,關閉,複製,...等操作,
也可以編譯"使用者自訂函數",
當受限於Excel內建函數的認知不足,或所有內建函數無法達到該功能,
使用者可以編譯有彈性的自訂函數來達到目的。


把巨集放在模組中 ->...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

keith7412123 發表於 2016-8-16 07:01 PM

jasonlin7 發表於 2016-8-15 11:15 PM static/image/common/back.gif
開啟巨集的方法:
Excel檔案 -> 選項 -> 自訂功能區
再右邊欄中找到 "開發人員",將其勾選,確認後離開。


先謝謝..可能我的EXCEL不是完整版..沒有這功能

Midnight-Angel 發表於 2016-8-24 02:11 AM

其實這個表格設計有問題!應該將參加編號設在A列,分數填入B,C,D列,這樣的設計才是正常資料輸入格式.然後在E列輸入公式 =sum(b4:d4) ,便能簡單清楚顯示總分,完全不用巨集了.

jasonlin7 發表於 2016-8-24 11:44 PM

Midnight-Angel你的想法不錯,
但是這樣需要手動去變換排列的方式,
手動找尋每個排列順序對映的分數。

我猜測keith7412123最直接獲得的資料就是每一個項目的參加編號排列順序,
接著,我猜測如果這件工作是每天要做的事情(daily work),
或者項目不止三項,可能有很多項,
那麼keith7412123去改變排列方式勢必遇到困難。

在使用Sum函數之前,
是否能夠找到一個可以快速改變資料排列方式的方法。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

jasonlin7 發表於 2016-8-25 12:24 AM

本帖最後由 jasonlin7 於 2016-8-25 12:29 AM 編輯

努力找到Match和Index兩種函數的使用方法

在J4貼上公式:

=INDEX($A$4:$A$11,MATCH(I4,$B$4:$B$11,0))+INDEX($A$4:$A$11,MATCH(I4,$C$4:$C$11,0))+INDEX($A$4:$A$11,MATCH(I4,$D$4:$D$11,0))
下拉套用到J5,J6,J7就完成了,
不過缺點是:一旦項目增多,公式也變得冗長。



頁: [1]