返回列表 上一主題 發帖

如何去找離自己最近的值?

如何去找離自己最近的值?

求值.rar (7.45 KB)
版上大大,請問如同附件中的檔案標示,如何寫函數去尋找離自己最近的值去做相減呢?

回復 3# hcm19522

H大,感謝你的回覆,但我有點看不太懂,能大致說明一下此函數嗎?

TOP

本帖最後由 藍天麗池 於 2024-2-5 14:10 編輯

回復 5# 准提部林


    准大,函數內容有需要更改嗎?我複製貼上後出現錯誤值

TOP

回復 9# 准提部林


    ??,准大,我不太懂你的意思

TOP

回復 9# 准提部林


    准大,能麻煩你幫我打在範例上面我再研究看看嗎?

TOP

回復 9# 准提部林

准大,我說不懂是因為查到的跟你說的不太一樣,不知道是打錯,還是有其他用法https://support.microsoft.com/zh-tw/office/%E5%BD%B1%E7%89%87-%E9%99%A3%E5%88%97%E5%85%AC%E5%BC%8F-8ff8257a-b28e-4e81-b4f8-30f793412dfa

TOP

本帖最後由 藍天麗池 於 2024-2-6 21:10 編輯

回復 14# 准提部林


   准大,我一開始在K2用Ctrl + Alt+ Enter,結果沒反應,後來看到另一篇是用Ctrl + Shift + Enter,結果他就自己呈現右拉跟下拉的功能,因為兩個有點像,所以才會誤解是打錯,或是有其他用法,抱歉

TOP

回復 14# 准提部林


    另外,准大我有些地方不太了解,我有用GPT先查了一下還是不太懂,在跟您請教一下

      1.MOD(MAX(($C$1:$F2=C3)*(ROW($A$1:$A2)*10^5+$G$1:$J2)),10^5) 這邊這串我不太了解它的原理MAX、ROW、MOD、10^5,這些分開我都看得懂,但合在一起我就不懂了,可以麻煩准大幫我說明一下嗎?
      
      2.這個陣列公式輸入完沒問題後,我再去點K2讓她呈現編輯狀態,然後什麼都不改,在按ENTER,之後她會出現#VALUE,為啥{}會消失不見?又為啥自己加{}卻沒辦法有陣列的效果了呢?

      3.也是同上面的問題,假如我有以下的程式碼,在這裡的部分要填入Range("V" & Target.Row).Formula = "{=IF(OR($C$1:$F1=C2),G2-MOD(MAX(($C$1:$F1=C2)*(ROW($A$1:$A1)*10^5+$G$1:$J1)),10^5),"")"},但又因為{}自己加會沒效果,那我程式碼又應該如何更改呢?

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, [B5:B210000]) Is Nothing Then
        Range("V" & Target.Row).Formula = "這裡"
      
     ElseIf Not Intersect(Target, [C5:C210000]) Is Nothing Then
        Range("W" & Target.Row).Formula = "這裡"
   End If
   Application.EnableEvents = True
        

End Sub

准大抱歉,問題比較多,想說這個論壇有很多厲害的前輩在,想多多學習,還請准大不吝賜教

TOP

回復 19# 准提部林


    感謝准大的回覆,我再研究看看

TOP

回復 19# 准提部林


        准大跟你請教一下,上次我根據你教我的第3點去錄製,之後執行程式,出現"無法設定種類range的formulaArray屬性"的錯誤訊息,以下是我的程式碼,是有哪邊出錯嗎?(出現錯誤的地方在Range("V" & Target.Row).FormulaArray這邊)

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, [B5:B210000]) Is Nothing Then
        Range("V" & Target.Row).FormulaArray = "=IF(AND(RC[-20]=R[-1]C[-20],RC[-19]=R[-1]C[-19],RC[-18]=R[-1]C[-18],RC[-17]=R[-1]C[-17],RC[-16]=R[-1]C[-16]),RC[-10]-R[-1]C[-10]+RC[-9]-R[-1]C[-9]+RC[-8]-R[-1]C[-8]+RC[-7]-R[-1]C[-7]+RC[-6]-R[-1]C[-6],IF(OR(R4C2:R[-1]C6=RC[-20]),RC[-10]-MOD(MAX((R4C2:R[-1]C6=RC[-20])*(ROW(R1C1:R[-4]C1)*10^5+R4C12:R[-1]C16)),10^5),0)+IF(OR(R4C2:R[-1]C6=RC[-19]),RC[-9]-MOD(MAX((R4C2:R[-1]C6=RC[-19])*(ROW(R1C1:R[-4]C1)*10^5+R4C12:R[-1]C16)),10^5),0)+IF(OR(R4C2:R[-1]C6=RC[-18]),RC[-8]-MOD(MAX((R4C2:R[-1]C6=RC[-18])*(ROW(R1C1:R[-4]C1)*10^5+R4C12:R[-1]C16)),10^5),0)+IF(OR(R4C2:R[-1]C6=RC[-17]),RC[-7]-MOD(MAX((R4C2:R[-1]C6=RC[-17])*(ROW(R1C1:R[-4]C1)*10^5+R4C12:R[-1]C16)),10^5),0)+IF(OR(R4C2:R[-1]C6=RC[-16]),RC[-6]-MOD(MAX((R4C2:R[-1]C6=RC[-16])*(ROW(R1C1:R[-4]C1)*10^5+R4C12:R[-1]C16)),10^5),0))"
      
     ElseIf Not Intersect(Target, [C5:C210000]) Is Nothing Then
        Range("W" & Target.Row).FormulaArray = "=IF(AND(RC[-16]=R[-1]C[-16],RC[-15]=R[-1]C[-15],RC[-14]=R[-1]C[-14],RC[-13]=R[-1]C[-13],RC[-12]=R[-1]C[-12]),RC[-6]-R[-1]C[-6]+RC[-5]-R[-1]C[-5]+RC[-4]-R[-1]C[-4]+RC[-3]-R[-1]C[-3]+RC[-2]-R[-1]C[-2],IF(OR(R4C7:R[-1]C11=RC[-16]),RC[-6]-MOD(MAX((R4C7:R[-1]C11=RC[-16])*(ROW(R1C1:R[-4]C1)*10^5+R4C17:R[-1]C21)),10^5),0)+IF(OR(R4C7:R[-1]C11=RC[-15]),RC[-5]-MOD(MAX((R4C7:R[-1]C11=RC[-15])*(ROW(R1C1:R[-4]C1)*10^5+R4C17:R[-1]C21)),10^5),0)+IF(OR(R4C7:R[-1]C11=RC[-14]),RC[-4]-MOD(MAX((R4C7:R[-1]C11=RC[-14])*(ROW(R1C1:R[-4]C1)*10^5+R4C17:R[-1]C21)),10^5),0)+IF(OR(R4C7:R[-1]C11=RC[-13]),RC[-3]-MOD(MAX((R4C7:R[-1]C11=RC[-13])*(ROW(R1C1:R[-4]C1)*10^5+R4C17:R[-1]C21)),10^5),0)+IF(OR(R4C7:R[-1]C11=RC[-12]),RC[-2]-MOD(MAX((R4C7:R[-1]C11=RC[-12])*(ROW(R1C1:R[-4]C1)*10^5+R4C17:R[-1]C21)),10^5),0))"
   End If
   Application.EnableEvents = True
        

End Sub

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題