返回列表 上一主題 發帖

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

回復 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

回復 21# 藍天麗池


上傳檔案看看~~

TOP

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

回復 22# 准提部林

TEST.rar (806.63 KB) 這個
我自己猜想是裡面多個陣列相加減的原因,是不是要將陣列分開來相加減才不會出現錯誤,我另一個檔案把她拆開就沒事,但是不用VBA的方式直接打在儲存格上卻可以,我就覺得有點奇怪了

TOP

本帖最後由 准提部林 於 2024-2-17 11:47 編輯

回復 23# 藍天麗池


檔案測不了//
可用另一方式:利用一儲存格(例如:V4)輸入陣列公式, 執行時用V4去COPY
    If Not Intersect(Target, [B5:B210000]) Is Nothing Then
       Range("V4").Copy Range("V" & Target.Row)

TOP

回復 24# 准提部林


   我再試試看

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題