Board logo

標題: 取最小值後根據月份連續填滿儲存格 [打印本頁]

作者: jcman    時間: 2011-10-20 10:34     標題: 取最小值後根據月份連續填滿儲存格

Dear all,

我的問題如附件.我想試試看可不可以用公式解決I欄的問題.I欄的數字需由下網上按照日期(列)看,取B到G欄最小的值,也就是H欄的數字(H欄不一定要存在)
再根據該列最小值對應到B到G欄第一列的數字(1,2,3,6,9,and 12)往上將I欄儲存格填滿.之後以此類推.

舉例來說,I13的1.51%取自B13-G13的最小值(C13),也就是H13,再根據C13往上對應到C1的數字(2),自I13往上填2格(I13和I12).其他都是以此類推....

線再的I欄其實我已經手動調整過了,但是因為資料數量龐大,希望各位大大可以幫我想個簡單的辦法.感激不盡

[attach]8280[/attach]
作者: Hsieh    時間: 2011-10-20 22:12

回復 1# jcman

資料重新排序後加輔助欄
[attach]8287[/attach]
作者: jcman    時間: 2011-10-21 11:11

感激謝大的回覆,這個公式邏輯應該是對的,但我手動填上的結果似乎與公式的結果不完全一致,可能是我說明或一開始的檔案有誤,我手動拉了一欄數字(J),可否請謝大再看一下?

另外輔助欄外的部分我實在看不太懂,K欄的部分應該是用來輔助L欄的,但是為何要在K1放上1,其餘各列再加上前一列的數值? L 欄的lookup value為何是用row (a1)開始?, result vector 用row(($1:$13) 的意義又在哪裡呢?

以上可否請大大幫我解釋一下 ,再另外附上含J欄的數字以供參考,謝謝

[attach]8292[/attach]
作者: Hsieh    時間: 2011-10-21 13:54

回復 3# jcman

一般函數可能有困難
用自定義函數解決
    [attach]8296[/attach]
作者: jcman    時間: 2011-10-21 14:31

本帖最後由 Hsieh 於 2011-10-21 16:21 編輯

謝謝您的回答.所以您的意思是我這個問題即使套用您之前的輔助欄位也無法用公式解了嗎?
但VBA我實在完全不懂,可否麻煩您解釋一下下列語法? 因為不懂VBA,所以才會想說看可不可以用公式解答,希望可以了解公式或語法過程,謝謝您了

Function MyMin(Rng As Range, k%)'Rng是表格範圍,k代表取第幾個數值
Dim Ar()'宣告動態陣列
i = 2'從表格第二列為初始列
Do Until s >= Rng.Rows.Count'進行迴圈直到陣列大小大於等於表格的列數
Set x = Rng.Rows(i)'設表格的i列為變數x的範圍
n = Application.Min(x)'取最小值
j = Application.Index(Rng.Rows(1), , Application.Match(n, x, 0))'取最小值對應到表格第一列的值
For x = 1 To j  '做j次的迴圈
ReDim Preserve Ar(s)  '重新布置陣列
Ar(s) = n  '將最小值賦予陣列
s = s + 1  '預備擴展陣列
Next
i = i + j  '列數加上前列最小值對應次數為下一回圈的列
Loop  '跳脫迴圈
MyMin = Ar(k - 1)  '將陣列的第k-1個元素作為答案(因為陣列的索引值從零開始,所以必須減1)
End Function
作者: jcman    時間: 2011-10-25 10:18

我需要一點時間消化一下,非常謝謝您的時間和分享.




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