我正在将我的MATLAB代码转换为Excel文档,但难以将以下公式转移。
x=(b/N)*(-floor(N/2):floor(N/2))
例如,如果b = 2且N = 5 结果将是:
x = -0.8000 -0.4000 0 0.4000 0.8000
如果b = 2且N = 6,则结果为:
x = -1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000
注意:如果N是奇数,则x中有N个元素,如果N是偶数,则x中有N + 1个元素。
如何在Excel中编写它?
答案 0 :(得分:1)
这个答案来自我对另一个answer的评论。
这是一个非常大的数组公式。选择F3:F19
,在公式栏中输入公式,然后按 CTRL + SHIFT + ENTER 进行评估。
(假设您的b位于A1
单元格中,您的N位于C4
单元格中。
=IFERROR(INDEX(($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2),SMALL(IF(MATCH(($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2),($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2),0)=ROW(INDIRECT("1:" & ROWS(($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2)))),MATCH(($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2),($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2),0),""),ROW(IDIRECT("1:" & ROWS(($A$1/$C$4)*INT(($C$4-(ROW(INDIRECT($C$4 & ":" & 3* $C$4-1))-$C$4))/2)))))),"")
这是我的测试workbook
答案 1 :(得分:0)
在Excel VBA中:
Dim j As Integer = 0
Dim b As Double, N As Double, M As Double, k As Double
b = Cells(3, 3)
N = Cells(3, 4)
If Int(N/2) = N/2 Then
M = N + 1
Else
M = N
End If
For k = -(b/N)*(floor(N/2) To (b/N)*(floor(N/2) Step 2*(b/N)*(floor(N/2)/M
j = j + 1
x(j)=k
Next k