返回列表 上一主題 發帖

[發問] 公式程式碼化

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

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

TOP

回復 28# ziv976688

標示底色餘數登入 都已經是跑各個工作表了

你好像又把這兩個寫在主程式的For 迴圈裡面,執行了N次一樣的操作~
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

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

回復 44# ziv976688

SP = (xV.Offset(, -9) - SP) Mod 49: If SP = 0 Then SP = 49  'M2-V2 mod 49

A式 : 當 -SP之後的差值=負數時,則SP自動轉為正數(即如=絕對值)
SP = ABS(xV.Offset(, -9) - SP) Mod 49: If SP = 0 Then SP = 49  'M2-V2 mod 49


B式 : 當-SP之後的差值=負數時,則SP自動再+49轉為正數(即如=一般的函數計算)
SP = (xV.Offset(, -9) - SP + 49) Mod 49: If SP = 0 Then SP = 49  'M2-V2 mod 49
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 45# ziv976688

1)
Brr(i, j) = Brr(i, j) & "," & Format(ABS((Arr(i, j) - Val(A)) Mod 49), "00;;49")

2)
V= (Arr(i, j) - Val(A)) Mod 49
IF V<0 THEN V=V+49
Brr(i, j) = Brr(i, j) & "," & Format(V, "00;;49")

TOP

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

TOP

回復 48# ziv976688


B式 : 當-SP之後的差值=負數時,則SP自動再+49轉為正數(即如=一般的函數計算)
SP = (xV.Offset(, -9) - SP + 49) Mod 49: If SP = 0 Then SP = 49  'M2-V2 mod 49

若是
11-90 = -79,再+49變成 -30 ,還是負數怎麼辦?
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

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

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題