返回列表 上一主題 發帖

DDE分時記錄如何用vba找出對應的號碼

DDE分時記錄如何用vba找出對應的號碼

之前在Excel 一般區發問,已經可以在分時記錄的儲存格,找出最大小值的對應號碼
Z11=HLOOKUP(Y11,CHOOSE({1;2},OFFSET(A$10,ROW(A1),,,22),A$10:V$10),2,)

但在vba裡,只能找出1~22的排序
    Mx = Application.Max(Sht1.Range("a" & xRow & ":v" & xRow))
   Ans1 = Sht1.Range("a" & xRow & ":v" & xRow).Find(Mx, , , xlWhole).Address
   Sht1.Range("Y" & xRow).Value = Range(Ans1).Column
   Mi = Application.Min(Sht1.Range("a" & xRow & ":v" & xRow))
   Ans2 = Sht1.Range("a" & xRow & ":v" & xRow).Find(Mi, , , xlWhole).Address
   Sht1.Range("Z" & xRow).Value = Range(Ans2).Column

有沒有辦法用vba寫出對應的號碼呢?最好是顯示在固定的欄位裡,
請各位高手幫忙一下,感謝大家! DDE_VBA(max_min).zip (33.58 KB)

回復 2# 准提部林

感謝大師的回答,後來我自己也找到方法了。
   Mx = Application.Max(Sht1.Range("a" & xRow & ":v" & xRow)) '每一列找出最大值
   Ans1 = Sht1.Range("a" & xRow & ":v" & xRow).Find(Mx, , , xlWhole).Column '每一列找出最大值的儲存格是在第幾欄
   Sht1.Range("Y" & xRow).Value = Range("A10:V10").Cells(Ans1) 'Y欄位往下記錄最大值所對應的號碼
   
   Mi = Application.Min(Sht1.Range("a" & xRow & ":v" & xRow))
   Ans2 = Sht1.Range("a" & xRow & ":v" & xRow).Find(Mi, , , xlWhole).Column
   Sht1.Range("Z" & xRow).Value = Range("A10:V10").Cells(Ans2)

如果分時記錄資料,先計算前五列的價差,再找出最大、最小值,不知道要怎麼修改?
需要用到陣列運算嗎? 真不好意思,問題有點多,這應該是最後一個問題了,再次感謝!
DDE_VBA_計算價差再找出最大小值的對應號碼.zip (25 KB)

TOP

回復 4# 准提部林
感謝淮大這麼快就回覆,這幾天極力想自行處理一些問題,但真的有點無助。
其實也不是新問題,因為DDE資料常常沒有成交量,使得儲存格產生 #N/A的情況。

查了網路資料,應該可以用 IFNA(...或 IF(ISNA...來解決,
不過 LOOKUP(1,0/((A11:V11-A6:V6)=MAX(A11:V11-A6:V6)) 這個公式實在太深奧了,
嘗試了很多位置,插入IFNA 都無法成功,不知道有沒有解決的辦法?

TOP

        靜思自在 : 甘願做、歡喜受。
返回列表 上一主題