Board logo

標題: [發問] 請問如何計算連續出現次數? [打印本頁]

作者: eric866    時間: 2011-8-4 19:11     標題: 請問如何計算連續出現次數?

A1             B1             C1            D1            E1            F1            G1            H1           I1             J1              K1          L1

-1           -685      -855       -2970     -2224      -1800      1258     -1710     -426          +?            +?             -?

如上~最右欄是最新資料   等於有連2欄是負值  統計結果是-2 ; 如果以後再加入連2欄正值  會自動統計變成2  ; 如果再加入1欄負值  又會自動統計變為-1
請問公式要如何寫?  謝謝!
作者: 棋語鳥鳴    時間: 2011-8-4 20:56

回復 1# eric866


    看不太懂您的意思!不知有沒有範例可看!
作者: eric866    時間: 2011-8-4 22:28

回復 2# 棋語鳥鳴


  您好~ 已上傳了  我是要算連續幾日  不知D行的函數要如何寫?[attach]7280[/attach]
作者: oobird    時間: 2011-8-4 23:14

本帖最後由 oobird 於 2011-8-4 23:23 編輯

回復 3# eric866


    這個滿傷腦筋的,用自訂函數吧。
  1. Function Calculat(rng As Range) As Double

  2. a = rng.Cells.Count

  3. If rng(a) > 0 Then

  4. Calculat = 1

  5. Do

  6. a = a - 1

  7. If rng(a) > 0 Then Calculat = Calculat + 1

  8. Loop Until rng(a) < 0 Or a = 1

  9. Else

  10. Calculat = -1

  11. Do

  12. a = a - 1

  13. If rng(a) < 0 Then Calculat = Calculat - 1

  14. Loop Until rng(a) > 0 or a=1

  15. End If

  16. End Function
複製代碼
[attach]7281[/attach]
作者: Hsieh    時間: 2011-8-4 23:20

回復 3# eric866

D2陣列公式
=(12-MAX(IF(SIGN($E2:$L2)<>SIGN($L2),COLUMN($E2:$L2))))*SIGN($L2)
向下複製
作者: eric866    時間: 2011-8-4 23:35

回復  eric866


    這個滿傷腦筋的,用自訂函數吧。
oobird 發表於 2011-8-4 23:14



謝謝oobird的解答  我看你已經用好了  可是我不太會用
請問這個VBA是貼在VB編輯器裡的外資 來源 還是THISWORKBOOK呢?  我3個都貼  然後D2填上=CALCULAT(E2:L2)  會顯示出#NAME?ㄋㄟ
作者: eric866    時間: 2011-8-4 23:43

回復 5# Hsieh


    您好~ 謝謝Hsieh 大的解答!  我把你的陣列公式貼到D2  結果會顯示#VALUEㄋㄟ  不知道是那裡出了問題?  我EXCEL剛學沒多久而已
作者: Hsieh    時間: 2011-8-4 23:46

本帖最後由 Hsieh 於 2011-8-4 23:51 編輯

回復 7# eric866
OOBIRD版大的程式碼要放在一般模組內才能使用

公式必須使用CTRL+SHIFT+ENTER輸入
新手請先將置頂精華文章閱讀
新手必讀
作者: oobird    時間: 2011-8-4 23:47

回復 6# eric866


    [attach]7282[/attach]
作者: eric866    時間: 2011-8-5 00:11

耶 兩種方法都可以耶   真的很感謝Hsieh及oobird 的抽空教導  謝謝 !
作者: eric866    時間: 2011-8-5 00:41

謝謝OOBIRD花時間幫我寫程式碼  也謝謝Hsieh寫的陣列公式  EXCEL真的是一門很深澳的學問
作者: ANGELA    時間: 2011-8-5 09:17

本帖最後由 ANGELA 於 2011-8-8 16:34 編輯

=LOOKUP(2,1/(E2:L2>=0),COLUMN(E2:L2))-iferror(LOOKUP(2,1/(E2:L2<0),COLUMN(E2:L2)),4)

2003
=LOOKUP(2,1/(E2:L2>=0),COLUMN(E2:L2))-IF(ISERROR(LOOKUP(2,1/(E2:L2<0),COLUMN(E2:L2))),4,LOOKUP(2,1/(E2:L2<0),COLUMN(E2:L2)))
作者: eric866    時間: 2011-8-5 23:09

回復 12# ANGELA


    謝謝ANGELA 提供另一個方法 ! 不過我試似乎會發生錯誤 #NAME? 這是陣列公式嗎?
作者: Hsieh    時間: 2011-8-6 01:03

回復 13# eric866


    IFERROR是2007版本的新函數
所以你以2003版會出現錯誤
作者: eric866    時間: 2011-8-9 21:34

回復 14# Hsieh


    原來如此~ 謝謝!
作者: eric866    時間: 2011-8-9 21:41

回復 12# ANGELA


    原來您有改了  確實也可以使用~  謝謝!
作者: zeny    時間: 2011-8-13 15:36     標題: 兩位大大的方法計算出來的結果,有兩行不一樣?為什麼呢

[attach]7407[/attach]
附表中黃色的兩行,兩位大大的結果是不一樣的,為什麼呢?
作者: Hsieh    時間: 2011-8-13 17:18

回復 17# zeny
當全部是相同符號時,最多是8,但答案是12
這是因為公式所在欄位是D欄
為了解決這種情形MAX函數中要加入最少要減去的值
改成陣列公式
=(COLUMN($L$1)-MAX(COLUMN(),IF(SIGN($E2:$L2)<>SIGN($L2),COLUMN($E2:$L2))))*SIGN($L2)
這樣在E:L欄位中插入欄位,也會自動改變
作者: zeny    時間: 2011-8-14 13:13     標題: RE: 經大大修改後,還有一行,兩位大大的結果不相同

回復  zeny
當全部是相同符號時,最多是8,但答案是12
這是因為公式所在欄位是D欄
為了解決這種情形MAX ...
Hsieh 發表於 2011-8-13 17:18



   但是肉眼計算的話,應該是這個公式是對的,而且也符合我這豬腦從後往前數數,數到不同就停止的簡單操作,呵呵

[attach]7446[/attach]
作者: jak    時間: 2013-10-14 11:01

回復 18# Hsieh
大大你好:
爬到數年前的寶
若是數據中有空格或是#N/a還能不能計算出下面這樣的結果?
例如:1,-1,2,#N/a,3,4,5結果是3
可否請大大賜教m(_     _)m
作者: ML089    時間: 2013-10-14 17:04

D2=SUM(-TEXT(QUARTILE(SIGN(E2:Z2)*(COLUMN(E2:Z2)-4),{4,0}),{"-0;!0","!0;0"}))
陣列公式
作者: ML089    時間: 2013-10-14 17:21

回復 20# jak


    空格可用
=LOOKUP(9^9, E2:Z2,FREQUENCY(COLUMN(E:Z),((SIGN(E2:Z2)<>SIGN(F2:AA2)))*COLUMN(E:Z)))*SIGN(LOOKUP(9^9,E2:Z2))




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