返回列表 上一主題 發帖

[發問] 可否用countif? 若是如何?

[發問] 可否用countif? 若是如何?

假如A欄有下面的資料, 如何統計出僅有一個A的有多少? 有兩個A的有多少個? 有三個A的有多少個? 沒有A的有多少?

可以用countif 嗎? 請大大指教.
  1. AAA
  2. AAB
  3. AAC
  4. AAD
  5. ABA
  6. ABB
  7. ABC
  8. ABD
  9. ACA
  10. ACB
  11. ACC
  12. ACD
  13. ADA
  14. ADB
  15. ADC
  16. ADD
  17. BAA
  18. BAB
  19. BAC
  20. BAD
  21. BBA
  22. BBB
  23. BBC
  24. BBD
  25. BCA
  26. BCB
  27. BCC
  28. BCD
  29. BDA
  30. BDB
  31. BDC
  32. BDD
  33. CAA
  34. CAB
  35. CAC
  36. CAD
  37. CBA
  38. CBB
  39. CBC
  40. CBD
  41. CCA
  42. CCB
  43. CCC
  44. CCD
  45. CDA
  46. CDB
  47. CDC
  48. CDD
  49. DAA
  50. DAB
  51. DAC
  52. DAD
  53. DBA
  54. DBB
  55. DBC
  56. DBD
  57. DCA
  58. DCB
  59. DCC
  60. DCD
  61. DDA
  62. DDB
  63. DDC
  64. DDD
複製代碼
ss

原來一個函式有這麼大的學問
受教ㄌ

TOP

回復 14# ML089


    不好意思,先入為主,沒看清楚。
    謝謝版大的指導。
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 11# softsadwind

>>   稍微修改一下你的公式=SUM(COUNTIF(A:A,"*"&REPT("*A",ROW(A1)+{-1,0})&"*")*{1,-1})
>>   rept內的A 變成*A

你修改的式子與我原式計算的意義不同,與12樓相同,請詳13樓說明

計算 *A*A*A* 型公式如下(任意排列3個A)
=SUM(COUNTIF(A:A,"*"&REPT("A*",ROW(A1)+{-1,0}))*{1,-1})
   

計算 *AAA* 型公式如下(連續排列3個A)
=SUM(COUNTIF(A:A,"*"&REPT("A",ROW(A1)+{-1,0})&"*")*{1,-1})
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 12# 准提部林

好式子

貴式(12樓)解的是有幾個A

我(7樓)解的是 A、AA、AAA有幾個

剛好都可以參考
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

參考看看:
C1=0
C2=1
C3=2
C4=3
公式:
=SUMPRODUCT(N(MMULT(LEN(SUBSTITUTE(A$1:A$60,"A",{1,11})),{-1;1})=C1))
 
附檔:內有以上樓層各公式的驗證比較
http://www.funp.net/182953

TOP

回復 9# ML089


    感謝ML089版主 指導...
    稍微修改一下你的公式=SUM(COUNTIF(A:A,"*"&REPT("*A",ROW(A1)+{-1,0})&"*")*{1,-1})
    rept內的A 變成*A
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 9# ML089
瞭解!
非常感謝ML089版主詳細的解說

TOP

回復 8# p212
1、對於REPT("A",ROW(A1)+{-1,0}),為何不直接用REPT("A",ROW(A1)-1)?
2、又COUNTIF結果*{1,-1},其*{1,-1}用意何在?在製造什麼樣的陣列結果供SUM運算?

回覆1
REPT("A",ROW(A1)+{-1,0}) ==> 當A1時 REPT("A", {0,1}) = {"", "A"} 可得兩個陣列值
REPT("A",ROW(A1)-1) ==> 當A1時 REPT("A", {0}) = {""} 可得一個陣列值

回覆2
=SUM(COUNTIF(A:A,"*"&REPT("A",ROW(A1)+{-1,0})&"*")*{1,-1})
=SUM(COUNTIF(A:A,{"**","*A*"})*{1,-1})
=SUM({64,37}*{1,-1})
=SUM({64,-37})
=27
   
COUNTIF(A:A,"**") 可得全部的數量
COUNTIF(A:A,"*A*") 可得*A*的數量
兩者相減就是不含A的數量

備註
** 包含 全部
*A*  包含 *A*、*AA*、*AAA*
*AA* 包含 *AA*、*AAA*
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

本帖最後由 p212 於 2014-4-29 08:45 編輯

回復 7# ML089
請教ML089版主:
1、對於REPT("A",ROW(A1)+{-1,0}),為何不直接用REPT("A",ROW(A1)-1)?
2、又COUNTIF結果*{1,-1},其*{1,-1}用意何在?在製造什麼樣的陣列結果供SUM運算?
謝謝!

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題