返回列表 上一主題 發帖

[發問] excel的公式+函數負荷重,是否有辦法精簡呢?

[發問] excel的公式+函數負荷重,是否有辦法精簡呢?

請問各位大大:
目前G2是用excel的公式和函數寫出來的,雖然可以使用,但程式的負荷很重,
是否有辦法精簡,且「只顯示G2」呢?

G2→當下時間若符合C1時間,就用 $A$2 x D欄 所算出來的數字。

懇請各位高手大大指導幫忙!!謝謝!!


問題20190409.rar (8.84 KB)

本帖最後由 hcm19522 於 2019-5-9 09:54 編輯

=LOOKUP(1,0/(MOD(B2,1)<=C:C),A2*D:D)
E F 公式可不用
隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog
已收集5000篇 EXCEL函數

TOP

回復 2# hcm19522


    感謝hcm19522大大的指導!

 再次請教hcm19522大大:
 因為我原本時間序列是遞減的,如果要改成遞增的
    C3  9:05
    C4  9:10
    C5 9:15
    ....以此類推

   問題一:時間序列(C欄)想改成遞增,公式要如何修改呢?
                   原公式 =LOOKUP(1,0/(MOD(B2,1)<=C:C),A2*D:D)

   問題二: 0/MOD(B2,1)  是什麼意思呢?為什麼是用「0/」呢?

TOP

回復 3# cslu37


    =OFFSET(D1,MATCH(MOD(B2,1),C:C),)*A2
0/條件成立-->0    0/條件不成立-->0/0-->錯誤   LOOKUP-->取最後條件成立值
隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog
已收集5000篇 EXCEL函數

TOP

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim a, t
  3. a = Range("c1:d" & [c1048576].End(3).Row).Value
  4. t = [b2].Value
  5. For i = UBound(a) To 3 Step -1
  6.     If t < a(i, 1) Then Exit For
  7. Next
  8. [g2] = [a2] * a(i, 2)
  9. End Sub
複製代碼

zz.zip (13.93 KB)

TOP

回復 4# hcm19522


    感謝hcm19522大大耐心詳細的說明,負荷完全減輕了,真的太謝謝您了!!

TOP

回復 5# ikboy


感謝ikboy的幫忙~
但是我開啟您的zz檔案,G2欄一直都顯示0,是我某個步驟少做了嗎><?

TOP

回復 7# cslu37


    直接將第4行改為
  1. t = TimeValue(Time)
複製代碼

TOP

回復 8# ikboy


   感謝ikboy的指導!謝謝您!
   想請教ikboy大大,原本檔案的時間是"倒序",要改成"正序",
   我將第五行最後「-1」改成「1」,第六行的「<」改成「>」,然後...就不會動了...
   懇請大大指導,正序的正確修改方式,謝謝您!

   zz-1.rar (15.3 KB)

TOP

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim a, t
  3. a = Range("C1:D" & [C1048576].End(3).Row).Value
  4. t = TimeValue(Time)
  5. For i = UBound(a) To 3 Step -1
  6.     If t > a(i, 1) Then Exit For
  7. Next
  8. [G2] = [A2] * a(i, 2)
  9. End Sub
複製代碼

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題