Re: [算表] 取最小值 --二維陣列取出一維,Index

看板Office作者 (不下棋 不要再問我了..)時間17年前 (2008/12/06 19:52), 編輯推噓2(208)
留言10則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《JieJuen (David)》之銘言: : 因為其實不知道您要問什麼 : 看您在看那篇文章後會不會剛好一樣 : k(i,j) 是二維陣列 : Sub test() : Dim k(5, 5) : k(1, 1) = 3 : k(2, 2) = 4 : j = Application.Small(k, 1) : Debug.Print j : End Sub : 直接用就完畢了 : 所以想說會不會是問 (接上面Debug.Print j 之下) : m = Application.Small(Array(k(1, 1), k(2, 2)), 1) : Debug.Print m : 在 檢視/即時運算視窗 可看debug.print的結果 (Ctrl+G) : ※ 引述《andrew2 (不下棋 不要再問我了..)》之銘言: : : 標題: [算表] 取最小值 : : 時間: Sat Dec 6 04:28:26 2008 : : 軟體:excel : : 版本:2003 : : 請問各位高手我在編寫vba時,需要抓最小第n筆資料 : : 我的寫法如下 : : HIVAR(j) = Val(Application.WorksheetFunction.Small(Range("a:a"), HISNO)) : : 其中hisno是我要求的第hisno項 : : 但是卻一直出現無法判別small的屬性 : : 所以請問大家這樣寫哪邊有錯啊 : : 還有再請問一下,引用excel函數時,裡面的資料可以用陣列嗎? : : 因為我目前都是用把它存在工作表後再叫出來的笨方法.... : : 謝謝各位 : : -- : : ◆ From: 218.160.239.138 : : 推 JieJuen:沒錯 只是a欄中沒有第HISNO小的數 12/06 12:55 : : → andrew2:在請問一下如果我在RANGE中,想放入陣列KK(I,J)應該如何寫 12/06 13:21 : : → JieJuen:#19ChPK-l 7831 用函數array 不知是否為所需? 12/06 13:42 : : → andrew2:還是不太懂耶..是能否寫出來讓我參考一下取k(i,1)中第3小 12/06 15:25 : ^第1欄? : : → andrew2:的數字,另外array函數要如何跟我的k(i,j)配合呢? 謝謝J大 12/06 15:26 : Sub test() : Dim k(5, 5) : k(1, 1) = 3 : k(2, 2) = 4 : k(0, 0) = 2.5 : k(1, 0) = 3.5 : j = Application.Small(k, 1) : Debug.Print "j = " & j : m = Application.Small(Array(k(1, 1), k(2, 2)), 1) : Debug.Print "m = " & m 第二種就是我想問的...如果有k(100,100)那我要怎樣寫迴圈 才不用把Array((k(1,1),k(2,1),.....)全部列出來 我舉例說明我的情形好了: 我把數字存在excel欄位 A B C 1 2 3 4 5 6 7 8 9 . . . . . . 假設有K(100,3) 那我要如何分別取出A ,B ,C 欄倒數第N小個的數字 所以我才會像用迴圈,可是卻不知道呼叫EXCEL函數後EX:Small裡面要如何放迴圈 是Small(Array(K(i,1),n)這樣嗎 ^^^^^^ 這邊就是我不懂的,因為上面是要把陣列都寫出,但是數量太多.... 謝謝J大的幫忙....真的讓我解決很多繁瑣的事情^_^ : n = Application.Small(Application.Index(k, 0, 1), 2) '第1欄中取small : Debug.Print "n = " & n : End Sub : 結果 : j = 2.5 : m = 3 : n = 3.5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.239.138

12/06 20:13, , 1F
所以你要的其實是第三種囉~?(在a欄取small)
12/06 20:13, 1F

12/06 20:17, , 2F
A B C就是n(i)=...Index(k, 0, i)...
12/06 20:17, 2F

12/06 20:34, , 3F
請問Index(k,0,i)其中的0和i是指什麼?
12/06 20:34, 3F

12/06 21:20, , 4F
0指全部的(列) i指第i欄 所以1欄(A欄)全部即Index(k,0,1)
12/06 21:20, 4F

12/06 21:22, , 5F
見EXCEL說明檔(非VBA說明檔)INDEX 此為工作表函數
12/06 21:22, 5F

12/06 21:28, , 6F
上例中Index(k,0,1)={1;4;7;...}
12/06 21:28, 6F

12/06 21:30, , 7F
Index(k, 0, 2)={2;5;8;...} Index(k, 0, 1)={3;6;9;...}
12/06 21:30, 7F

12/06 21:30, , 8F
3
12/06 21:30, 8F

12/06 22:58, , 9F
我懂了 感謝您~
12/06 22:58, 9F

12/07 04:41, , 10F
^^
12/07 04:41, 10F
文章代碼(AID): #19EcTiCk (Office)
文章代碼(AID): #19EcTiCk (Office)