------------------------------- | .. | .. | .. | .. | .. | .. | | 21 | 22 | 23 | 24 | 25 | .. | | 11 | 12 | 13 | 14 | 15 | .. | | 1 | 2 | 3 | 4 | 5 | .. | -------------------------------
必须成为
------------------------------- | .. | .. | .. | .. | .. | .. | | 3 | 13 | 23 | 33 | 43 | .. | | 2 | 12 | 22 | 32 | 42 | .. | | 1 | 11 | 21 | 31 | 41 | .. | -------------------------------
现在我不是数学家(我现在更不是程序员了),但我想出了:F(y)=((MOD(x,10)-1)*10)+(1+((x-MOD(x,10))/10))
(x
是前块a中的值顶部,y
是下面预阻区中的值。)现在这可以正常工作(例如10
)。
在VBScript中,我首先写了下面的内容:
Function GetPosInSrcRack(Pos) Dim PlateDef(9), x, y, i, tmp ' Plate Definition ReDim tmp(UBound(PlateDef)) For x = 0 To UBound(PlateDef) PlateDef(x) = tmp Next i = 1 For x = 0 To UBound(PlateDef) For y = 0 To UBound(PlateDef(x)) PlateDef(x)(y) = i i = (i + 1) Next Next 'Dim msg ' Check definition 'For x = 0 To (UBound(PlateDef)) ' msg = Join(PlateDef(x), ", ") & vbCrLf & msg 'Next ' Get the Position y = (pos Mod 10) x = ((pos - y) / 10) GetPosInSrcRack = PlateDef(y)(x) End Function
当然,这很有效,但很糟糕。
使用上面的公式我会写:
Function GetPosInSrcRack(Pos) Pos = (((Pos MOD 10)-1)*10)+(1+((Pos - (Pos MOD 10))/10)) End Function
但就像我说的那样,这仍然是不正确的(10给出-8) 有人可以帮帮我吗?
答案 0 :(得分:2)
只需使用Paste Special > Transpose
选项。
答案 1 :(得分:1)
y=(MOD(x-1,10))*10+INT((x-1)/10)+1
(顺便说一句,你所做的不是矩阵换位,但这样做会做你做的,只会做得更好。)