返回列表 上一主題 發帖

[發問] 公式程式碼化

本帖最後由 ziv976688 於 2021-7-27 18:07 編輯

回復 40# ML089
不好意思,是我沒有注意到要將36樓的貴範例檔,再貼上37樓的貴解
感謝您

TOP

回復 42# n7822123
多謝提醒~我再檢查看看。
謝謝您

TOP

本帖最後由 ziv976688 於 2021-7-28 06:25 編輯

回復 4# ML089
減算_取餘數(A式和B式)_M1.rar (101.07 KB)    =>可按清除鍵~重新測試。
版主 : 您好 !
請教您~
Module 3
先把列7 SP = (SP + xV.Offset(, -9)) Mod 49: If SP = 0 Then SP = 49  'V2+M2 mod 49
調整為SP = (xV.Offset(, -9) + SP) Mod 49: If SP = 0 Then SP = 49  'M2+V2 mod 49
以利作需求說明。

需求:
想將SP = (xV.Offset(, -9) + SP) Mod 49: If SP = 0 Then SP = 49  'M2+V2 mod 49
改為SP = (xV.Offset(, -9) - SP) Mod 49: If SP = 0 Then SP = 49  'M2-V2 mod 49
然後有二種方式的計算狀況 :
A式 : 當 -SP之後的差值=負數時,則SP自動轉為正數(即如=絕對值)
以函式作簡單說明~
EX : 準2進3!........準7進8!的D2=
=IF((V2<>"")*OR(IF(MOD(ABS(M2-V2),49),MOD(ABS(M2-V2),49),49)=($M$27:$S$27)),IF(MOD(ABS(M2-V2),49),MOD(ABS(M2-V2),49),49),"")
右拉再下拉填滿
EX :的A式_Ans (準2進3!);…….其餘類推。

B式 : 當-SP之後的差值=負數時,則SP自動再+49轉為正數(即如=一般的函數計算)
以函式作簡單說明~
EX : 準2進3!........準7進8!的D2=
=IF((V2<>"")*OR(IF(MOD(M2-V2,49),MOD(M2-V2,49),49)=($M$27:$S$27)),IF(MOD(M2-V2,49),MOD(M2-V2,49),49),"")
EX :  B式_Ans (準2進3!);…….其餘類推。  

以上 二種的計算方式之程式碼~懇請指導。
謝謝您^^

TOP

本帖最後由 ziv976688 於 2021-7-28 06:53 編輯

回復 30# 准提部林
減算_取餘數(A式和B式)_Z1.rar (99.8 KB)     =>可按清除鍵~重新測試。
版主 : 您好 !
請教您~
Module 3
需求:
想將列10  Brr(i, j) = Brr(i, j) & "," & Format((Arr(i, j) + Val(A)) Mod 49, "00;;49")
改為 Brr(i, j) = Brr(i, j) & "," & Format((Arr(i, j) - Val(A)) Mod 49, "00;;49")
然後有二種方式的計算狀況 :
A式 : 當- Val(A)之後的差值=負數時,則Brr(i, j)自動轉為[colorBlue]=正數(即如=絕對值)
以函式作簡單說明~
EX : 準2進3!........準7進8!的D2=
=IF((V2<>"")*OR(IF(MOD(ABS(M2-V2),49),MOD(ABS(M2-V2),49),49)=($M$27:$S$27)),IF(MOD(ABS(M2-V2),49),MOD(ABS(M2-V2),49),49),"")
右拉再下拉填滿
EX :A式_Ans (準2進3!);…….其餘類推。

B式 : 當- Val(A)之後的差值=負數時,則Brr(i, j)自動再+49轉為正數(即如=一般的函數計算)
以函式作簡單說明~
EX : 準2進3!........準7進8!的D2=
=IF((V2<>"")*OR(IF(MOD(M2-V2,49),MOD(M2-V2,49),49)=($M$27:$S$27)),IF(MOD(M2-V2,49),MOD(M2-V2,49),49),"")
EX :  B式_Ans (準2進3!);…….其餘類推。  

以上 二種的計算方式之程式碼~懇請指導。
謝謝您^^

TOP

回復 46# ML089
回復 47# 准提部林
二位版主 :
不好意思,公式寫錯了  
測試成功
謝謝二位版主的幫忙和指導~感恩

TOP

本帖最後由 ziv976688 於 2021-7-28 14:13 編輯

回復 49# ML089
版主 :
謝謝您的提醒

For Each SP In Split(xV, ",")
:
:
Next
xV不是已限制在0 To 48了嗎?
還是我又錯了
如果我又誤解程式碼的意涵~懇請賜正。
謝謝您

准大的參數登錄(Module 2)
Sub 參數登錄()
    Dim xS As Worksheet, xD, Arr(6), Brr, R&, i&, j%, k%, x%, N%, T$
    Set xD = CreateObject("Scripting.Dictionary")
    For Each xS In Sheets(Array("準2進3", "準3進4", "準4進5", "準5進6", "準6進7", "準7進8"))
        xD.RemoveAll
        R = xS.[ac65536].End(xlUp).Row - 1
        N = N + 1: If R < 1 Then GoTo s01
        ReDim Brr(1 To R - 1, 1 To 7)
        For k = 0 To N
            Arr(k) = xS.[ae2].Cells(1, k * 9 + 1).Resize(R, 7)
            For j = 1 To 7
                xD(Arr(k)(R, j) & "|" & k) = 1
            Next j
        Next k
        '--------------------------------------
        For i = 1 To R - 1
            For j = 1 To 7
                For x = 0 To 48
                    For k = 0 To N
                       ' T = (Arr(k)(i, j) + x) Mod 49 & "|" & k
                        V = (Arr(k)(i, j) - x) Mod 49
                        If V < 0 Then V = V + 49
                        T = V & "|" & k
                        If xD(T) = 0 Then GoTo x001
                    Next k
                    Brr(i, j) = Brr(i, j) & IIf(Brr(i, j) = "", "", ",") & x
x001:                     Next x
            Next j
        Next i
        '-------------------------------------
        With xS.[v2].Resize(R - 1, 7) '登錄位置
            .NumberFormatLocal = "@"
            .Value = Brr
        End With
s01:         Next
End Sub

TOP

回復 42# n7822123
已修正~
修正後執行正常(不到2秒)
謝謝您的指導和幫忙~感恩

TOP

本帖最後由 ziv976688 於 2021-7-29 00:40 編輯

回復 52# ML089
版主 :
感謝您的關心
那時候~是提問A4:A52=D2:J26的餘數各取1
您要確定A欄是否為最多是2位數的整數?

沒有您耐心的幫我將程式碼流程全部重新整理,
我是無法順利完成本次各分拆項的問題需求~感恩

TOP

本帖最後由 ziv976688 於 2021-7-29 02:50 編輯

回復 13# n7822123
請教您 :
列9 餘數 = (Arr(1)(R, C) + Num - 1) Mod 49 + 1  '加算Mod(M2+V2,49)

如果將貴程式碼改為減算,並將其差值轉為絕對值,使其都為正數
餘數 = (Abs(Arr(1)(R, C) - Num) - 1) Mod 49 + 1    '減算Mod(ABS(M2-V2),49)
但這樣改~會有一個小Bug : 當餘數=0 時,不會自動轉為49
必須再加  If 餘數 = 0 Then 餘數 = 49

請問 :以貴原程式碼要將差值改為絕對值的正確語法 ?
謝謝您

TOP

本帖最後由 ziv976688 於 2021-7-29 03:45 編輯

回復 37# ML089
餘數各取1_0729.rar (100.88 KB)
版主 :
不好意思,又有一個小Bug~
準5進6!A4=""
A4應該=46 。
懇請您賜正~謝謝您

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題