2012-02-20 73 views
0

例如:如何查找特定單元格中數值範圍內的總數值?

數據列:23至26,40,22,7,27日至28日,49,50至51,48,136,169,190至192,17至22 NIL

*包括個人號碼,號碼範圍和單詞。

我有如上所示在每個單獨的單元格中的這些數據,我如何拿出一個總結所有總數值的公式?

我需要做一些數據更新。

我目前使用傑裏揆提供了一個公式:

=ROWS(INDIRECT(SUBSTITUTE(SUBSTITUTE(A1," - ",":")," TO ", ":"))) 

謝謝!

+0

爲什麼你不只是總結了在其他問題中找到的值:http://stackoverflow.com/questions/9357232(即在另一列中總結公式的結果) – JMax 2012-02-20 13:24:31

+0

你在找一個COUNT還是一個小號UM?例如,從23到26,你是否想要4的答案或23 + 24 + 25 + 26 = 98的答案? – 2012-02-20 13:59:47

+0

@barryhoudini:實際上,這個問題是user1220400上一個問題的第二部分(您可以在我的第一條評論中找到鏈接) – JMax 2012-02-20 14:16:43

回答

2

試試這個公式基於JMAX's方法

=SUM(IF(ISERR(FIND("TO",A1:A6)),ISNUMBER(A1:A6)+0,MID(A1:A6,FIND("TO",A1:A6)+2,9)-LEFT(A1:A6,FIND("TO",A1:A6)-1)+1))

證實CTRL+SHIFT+ENTER

假定分隔符是「」按照你的例子

修訂的辦法:

FIND是區分大小寫的,搜索是沒有,所以允許「到」或「到」你可以改變的所有實例找到搜索。因此,以下版本將處理那些空白單元格,帶有「無」的單元格,條目爲23,24,27(計爲3)或11(計爲2)或具有單個數字的單元格的單元格像33在A1(計爲1)

=SUM(IF(ISERR(SEARCH("TO",A1:A6)),IF((A1:A6="Nil")+(A1:A6=""),0,LEN(A1:A6)-LEN(SUBSTITUTE(SUBSTITUTE(A1:A6,",",""),"&",""))+1),MID(A1:A6,SEARCH("TO",A1:A6)+2,9)-LEFT(A1:A6,SEARCH("TO",A1:A6)-1)+1))

REVISION NO 2

假設數據:A22

=SUM(IF(ISNUMBER(LEFT(A1:A22)+0),IF(ISNUMBER(SEARCH("to",A1:A22)),MID(A1:A22,SEARCH("TO",A1:A22)+2,9)-LEFT(A1:A22,SEARCH("TO",A1:A22)-1)+1,LEN(A1:A22)-LEN(SUBSTITUTE(SUBSTITUTE(A1:A22,",",""),"&",""))+1)))

+0

真棒,巴里,真棒! – 2012-02-20 16:17:28

+0

非常感謝Barry!這很棒!但是,我可以通過公式將分隔符識別爲TO並將它們結合在一起嗎?如果我的一個單元格包含'150&152'或'150,152',它也可以計算這些值嗎?非常感謝你! – user1220400 2012-02-21 04:13:54

+0

不錯的改進:) – JMax 2012-02-21 07:39:39

0

如果你想只用一個單元來計算整個結果,你可以用這個(根據我的解決方案,因爲INDIRECT不會在那裏工作):

=SUMPRODUCT(IF(ISERR(FIND("-",A1:A6)), 
MID(A1:A6,FIND("TO",A1:A6)+2,LEN(A1:A6))*1-LEFT(A1:A6,FIND("TO",A1:A6)-1)*1+1, 
MID(A1:A6,FIND("-",A1:A6)+1,LEN(A1:A6))*1-LEFT(A1:A6,FIND("-",A1:A6)-1)*1+1) 
) 
+0

非常感謝你JMax!然而我沒有得到正確的答案:( 我想嘗試所有在一個步驟,但是我知道這是非常艱難的 我可以總結的價值,但是,我將不得不確定那些數字範圍並應用適當的公式,如果我總結結果,是否有自動方法? – user1220400 2012-02-20 13:46:45

+0

在某些版本中,您可能必須使用Ctrl - Shift - Enter將公式驗證爲數組公式。如果它仍然沒有 – JMax 2012-02-20 13:50:20

+0

我試着進入公式並點擊數組並按Ctrl Shift Enter,發生錯誤 假設我要使用間接替代方法(Jerry替代方法,我無法將它拖下來並總結他們在一起,因爲在這些單獨的數字或單詞單元格上會出現#REF!錯誤。是否有任何方法可以繞過它? 非常感謝很多JMax! – user1220400 2012-02-20 13:54:40

0

如果要單個公式COLLEC從一系列細胞中獲取這些值,我會爲此寫一個新的自定義函數。我就是這麼做的...

如何安裝用戶定義函數:

  1. 打開工作簿
  2. 獲取到VB編輯(按Alt + F11)
  3. 插入一個新的模塊(插入>模塊)
  4. 複製並在你的代碼(如下)
  5. 走出VBA的(按Alt + Q)
  6. 保存粘貼爲啓用宏的工作簿

功能是安裝並準備使用。

下面是一個新功能的UDF代碼調用USERCOUNT位()*

Option Explicit 

Function USERCOUNT(RNG As Range) As Long 
Dim cell As Range, Cnt As Long, c As Long, buf As String 

    For Each cell In RNG 
     If IsNumeric(cell) And cell > 0 Then 
      Cnt = Cnt + 1 
     ElseIf InStr(1, cell, ",") > 0 Or InStr(1, cell, "&") > 0 Then 
      Cnt = Cnt + (Len(cell) - Len(Replace(Replace(cell, ",", ""), "&", "")) + 1) 
     ElseIf InStr(1, cell, " TO ") > 0 Or InStr(1, cell, " - ") > 0 Then 
      buf = Replace(Replace(cell, " TO ", ":"), " - ", ":") 
      Cnt = Cnt + Rows(buf).Rows.Count 
      buf = "" 
     End If 
    Next cell 

    USERCOUNT = Cnt 

End Function 

這簡直是在小區中使用像一個正常的功能指引一系列細胞:

USERCOUNT.JPG

+0

非常感謝你!我還有一個問題。如何使用間接函數進行適當的引用,以便可以拖動用戶計數公式,該公式可從同一工作簿上的各個工作表中提取數據。乾杯! – user1220400 2012-02-21 01:55:22

+0

忽略我以前的問題,我解決了它。非常感謝傑裏!我還有一個問題。如果我的一個數據單元格包含「140,142」或「140&142」,會發生什麼情況。答案值應該是2.乾杯! – user1220400 2012-02-21 02:47:48

+0

這被稱爲「功能蠕變」,你應該避免它發生。控制你的用戶(或你自己)被允許輸入值的方式,你不必繼續編輯你的功能。同時,我在上面的宏中添加了這兩個最新功能。希望至少有一個投票...;) – 2012-02-22 00:45:37

相關問題