標題:
[發問]
SUMPRODUCT函數+OR問提請教
[打印本頁]
作者:
KITTYBOY
時間:
2010-7-1 16:28
標題:
SUMPRODUCT函數+OR問提請教
本帖最後由 zz5151353 於 2010-7-1 17:15 編輯
DEAR ALL大大 -
1.小弟寫一程式如下.執行無問題
=SUMPRODUCT(ISNUMBER(SEARCH("CC",$F$1:$F$60000))*ISNUMBER(SEARCH("日立",$G$1:$G$60000))*ISNUMBER(SEARCH("C2",$E$1:$E$60000)),$R$1:$R$60000)
2.但原條件 ISNUMBER(SEARCH("日立",$G$1:$G$60000)) 想加入一 OR 條件為如下
2.1 即 G1:G60000 除含有原條件 日立 字元成立外. 想新增條件 = 含有日立 或 MCL 字元均成立.
2.2 改如下 OR(ISNUMBER(SEARCH("日立",$G$1:$G$60000)),ISNUMBER(SEARCH("MCL",$G$1:$G$60000)))
無法抓取出統計資料
'=SUMPRODUCT(ISNUMBER(SEARCH("CC",$F$1:$F$60000))*OR(ISNUMBER(SEARCH("日立",$G$1:$G$60000)),ISNUMBER(SEARCH("MCL",$G$1:$G$60000)))*ISNUMBER(SEARCH("C2",$E$1:$E$60000)),$R$1:$R$60000)
3.程式如何修改.煩不吝賜教 THANKS*10000
作者:
zz5151353
時間:
2010-7-1 17:23
本帖最後由 zz5151353 於 2010-7-1 17:35 編輯
沒有檔案可測試,請試一試這方法
=SUMPRODUCT(ISNUMBER(SEARCH("CC",$F$1:$F$60000))*ISNUMBER(SEARCH({"日立","MCL"},$G$1:$G$60000))*ISNUMBER(SEARCH("C2",$E$1:$E$60000))*$R$1:$R$60000)
作者:
KITTYBOY
時間:
2010-7-2 10:05
回復
2#
zz5151353
DERA 大大
您提供之函數出現BUG如下圖如附檔 煩您再不吝指導. THANKS
作者:
victorl
時間:
2010-7-2 12:36
回復
3#
KITTYBOY
SUMIF應該就可以了吧, Criteria 設定為"*日立*"(
包含
"日立")
=SUMIF(B2:B6,"*日立*",D2: D6)
試試看結果就是300喔
作者:
zz5151353
時間:
2010-7-2 14:41
E8
=SUMPRODUCT(ISNUMBER(SEARCH("CC",$A$1:$A$60000))*(OR(ISNUMBER(SEARCH($B$1:$B$60000,{"日立";"MCL"}))))*ISNUMBER(SEARCH("C2",$C$1:$C$60000)),$D$1:$D$60000)
作者:
KITTYBOY
時間:
2010-7-2 15:05
DEAR zz5151353 大大-
符合須求.THANKS *10000
DEAR victorl 大大-
SUMIF 無法符何我多條件之需求.THANKS.
作者:
KITTYBOY
時間:
2010-7-2 16:54
回復
6#
KITTYBOY
DEAR ALL大大 -
1.將您指導之程式使用於如附檔案.秀出 0 ????
1.1 原日立加總 =RANGE("B1") 10119
但日立 或 MCL 之加總 =RANGE("B2") 0
應 >= 10119 才對.
2.煩再不吝賜教. THANKS
作者:
Hsieh
時間:
2010-7-2 19:13
{=SUM(IF((ISNUMBER(FIND("CC",$F$2:$F$6000)))*((ISNUMBER(FIND("日立",$G$2:$G$6000)))+(ISNUMBER(FIND("MCL",$G$2:$G$6000)))),$R$2:$R$6000,))}[attach]1620[/attach]
作者:
PD961A
時間:
2010-7-2 19:34
回復
7#
KITTYBOY
'=SUMPRODUCT(ISNUMBER(SEARCH("CC",$F$1:$F$60000))*(OR(ISNUMBER(SEARCH($G$1:$G$60000
,{"日立","MCL"}))))*
ISNUMBER(SEARCH("C2",$E$1:$E$60000)),$R$1:$R$60000)
[attach]1621[/attach]
試試看...
作者:
zz5151353
時間:
2010-7-3 09:47
B1
=SUMPRODUCT(ISNUMBER(SEARCH("C2",$E$1:$E$6000))*ISNUMBER(SEARCH("CC",$F$1:$F$6000))*ISNUMBER(SEARCH($G$1:$G$6000,"日立"))+ISNUMBER(SEARCH($G$1:$G$6000,"MCL")),$R$1:$R$6000)
作者:
PD961A
時間:
2010-7-3 19:12
本帖最後由 PD961A 於 2010-7-4 10:01 編輯
請問各位先進
同樣用ISNUMBER(SEARCH
請問在SEARCH($G$1:$G$6000,"MCL")),和("C2",$E$1:$E$6000))
為什麼位子範圍要顛倒?有特別的用意嗎?
謝謝...
作者:
KITTYBOY
時間:
2010-7-5 14:56
回復
10#
zz5151353
DEAR HSIEH PD961A ZZ5151353 ALL 大大 -
感謝您們之指導.程式TEST後運作正常 THANKS*10000
作者:
Andy2483
時間:
2023-3-23 11:27
本帖最後由 Andy2483 於 2023-3-23 11:47 編輯
回復
1#
KITTYBOY
回復
8#
Hsieh
謝謝論壇,謝謝前輩
後學藉此帖複習 在同一陣列裡收集結果資料,將局部資料(結果資料)寫入儲存格,
學習的方案如下,請各位前輩指教
原始資料:
[attach]36012[/attach]
執行結果1:
[attach]36013[/attach]
執行結果2:產生一個新活頁簿
[attach]36014[/attach]
Option Explicit
Sub TEST()
Dim Brr, i&, Tr&, TT&, N&, Tf$, Tg$, j%
'↑宣告變數:Brr是通用型變數,(i,Tr,TT,N)是長整數變數,
'(Tf,Tg)是字串變數,j是短整數變數
Brr = Range([R1], Cells(Rows.Count, "E").End(xlUp))
'↑令Brr這通用型變數是 二維陣列,以[R1]到 E欄最後有內容儲存格值帶入
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
Tf = Trim(Brr(i, 2)): Tg = Brr(i, 3): Tr = Val(Brr(i, 14))
'↑令Tf這字串變數是 i迴圈列第2欄Brr陣列值去除頭尾空白字元的新字串
'↑令Tg這字串變數是 i迴圈列第3欄Brr陣列值的新字串
'↑令Tr這長整數變數是 i迴圈列第14欄Brr陣列值經轉化為數值的整數
If Tf Like "CC*" Then
'↑如果Tf變數是以 "CC"字串開頭?
If Tg Like "*日立*" Or Tg Like "*MCL*" Then
'↑如果 Tg變數裡包含"日立"字串,或 Tg變數裡包含"MCL"字串?,
'這兩個其中只要有一個條件成立?
TT = TT + Tr: N = N + 1
'↑令TT這長整數變數是 TT變數自身 + Tr變數,
'令N這長整數變數累加 1 (PS:N變數一開始的初始值是0)
'(N變數是要指定符合條件的資料要陸續放在Brr陣列的哪個列位)
For j = 1 To UBound(Brr, 2): Brr(N + 1, j) = Brr(i, j): Next
'↑設順迴圈!j從1到 Brr陣列橫向最大索引欄號,
'令(N變數+1)列第j變數欄的Brr陣列值是 i迴圈列第j變數欄的Brr陣列值
End If
End If
Next
[B2] = TT
'↑令[B2]儲存格值是 TT變數
Workbooks.Add
'↑令產生一個新的活頁簿
[A1].Resize(N + 1, UBound(Brr, 2)) = Brr
'↑令新活頁簿第1個工作表的[A1]儲存格擴展向下 N變數+1列,
'向右擴展 Brr陣列橫向最大索引欄號數欄,這範圍儲存格值 以Brr陣列值帶入
Cells.Columns.AutoFit
'↑令整個工作表全部欄位 自動調整欄寬
ActiveWindow.Zoom = 75
'↑令視窗顯示75%
'100 表示正常大小、200 表示雙倍大小,依此類推)
MsgBox TT
'↑令跳出提示窗顯示: TT變數值
Erase Brr
End Sub
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)