![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 疑難雜症區
(https://www.pcdvd.com.tw/forumdisplay.php?f=34)
- - 想請教Excal的條件式問題
(https://www.pcdvd.com.tw/showthread.php?t=934589)
|
|---|
引用:
還好啦,反正我在公司無聊也是在玩玩VBA 順便練習怎麼寫跟簡化 目前有的也寫成模組起來方便以後套用 |
引用:
寫的非常漂亮~~~ |
引用:
經過測試,很抱歉,不能用 比如說這個 =if(AVERAGE(E12:O31)<1,if(AVERAGE(E12:O31) >0.5,AVERAGE(E12:O31),),) 它會把所有值加總平均後跟0.5比,比0.5大的話再跟1比,比1小的話才能輸出值 我要的是: 把所有值先挑過,符合條件的才放進去加總平均,不符合條件的根本不會放進去一起平均 |
引用:
真是抱歉,沒把你要的要求看清楚 晚點再來想想怎麼寫比較順 |
延續edjc兄規劃,H1是上限,H2是下限(如有特殊需求,請自行改成>=)
用陣列公式 =AVERAGE(IF((E12:O31>H2)*(E12:O31<H1),E12:O31)) 公式寫入後,按ctrl-shift-enter 儲存格內的公式會變成 {=AVERAGE(IF((E12:O31>H2)*(E12:O31<H1),E12:O31))} 其他就如此這般改成STDEV、MAX、MIN.............. 試試看吧 |
引用:
我照樣輸入之後好像無法使用 怪哉(檢查... 還有多問一下,那個大括號{ },有什麼用途呀? |
引用:
要先把 =AVERAGE(......... 這些東西key進去,key好後,不是按 enter 而是按 Ctrl + Shift + Enter ,公式兩旁便會出現大括弧將陣列公式包起來 那個大括號只是用來表示,這個是陣列公式 陣列公式提供陣列來暫存待處理的數據, 再配合你使用的函數作計算 以底下這個為例 {=AVERAGE(IF((E12:O31>H2)*(E12:O31<H1),E12:O31))} 換作寫成vba, 大概像下面的樣子 (在下很久沒寫vba,而且本來程度就很有限 所以隨便湊一湊,看得懂大概的意思就好) set A1() as array B1=0 for I = 1 to 11 ' O-E=11 for J = 1 to 20 if cell(I,J) > H2 and cell(I,J) < H1 A1(B1)= cell(I,J) B1=B1+1 endif next J next I C1=average(A1(0)+A1(1).....A1(B1-1)) |
|
還有這種寫法,受教了 :like: :like: :like: :)
|
引用:
感謝 對於vba的寫法也給您參考一下 一般輸入公式或值可以用以下這兩種指令 CExcel.Range("e5").Formula = CExcel.Range("e5").Value = CExcel是你指定的活頁,Range是放你要填入什麼位置 陣列函數是用這個指令 CExcel.Range("e2").FormulaArray = 他就會把你填入的公式以陣列公式的方式入 |
| 所有的時間均為GMT +8。 現在的時間是05:50 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2026。