使用偏移量将公式向下复制到列中

问题描述 投票:-1回答:1

<table><tbody><tr><th> </th><th>A</th><th>B</th></tr><tr><td>1</td><td>17</td><td> </td></tr><tr><td>2</td><td>15</td><td> </td></tr><tr><td>3</td><td>31</td><td>average(A1-A3)</td></tr><tr><td>4</td><td>24</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>5</td><td>27</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>6</td><td>49</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>7</td><td>16</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>8</td><td>45</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>9</td><td>35</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>10</td><td>17</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>11</td><td>12</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>12</td><td>32</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>13</td><td>37</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>14</td><td>17</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>15</td><td>43</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr><tr><td>16</td><td>45</td><td>(ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))</td></tr></tbody></table>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9sOXBoVi5wbmcifQ==” alt =“在此处输入图像描述”>“ >>

[我正在尝试应用一个公式,在该公式中,我需要引用公式单元格左侧的几个单元格,并向上引用几个单元格,然后将该公式向下应用到该列的下方相当多的行。

我正在尝试通过使用偏移功能来获得结果,但是没有得到期望的结果。

我将非常感谢任何指导。

Sub ResultAchievedIsNotAsRequired()

Dim variableA As Long
variableA = Worksheets("DATA").Range("D7").Value

Dim LeftRow As Long
LeftRow = ActiveCell.Offset(0, -1).Value

Dim Upperrow As Long
Upperrow = ActiveCell.Offset(-1, 0).Value

Dim q As Long
Worksheet("MyCalculation").Range("B4").Select

For q = 4 To 50
    Selection.Value = (ActiveCell.Offset(0, -1).Value * (2 / (VariableA + 1)) + ActiveCell.Offset(-1, 0).Value * (1 - (2 / (VariableA + 1))))
    ActiveCell.Offset(1, 0).Activate
Next

End Sub

====非常抱歉我的互联网连接中断了几天。我应该更准确地表达这个问题。

  • 单元格B3的值应等于=> A1到A3的平均值。
  • B4单元应计算:(单元格A4 *(2 / 8-1)的值+单元格B3 *(1-2 / 8 + 1)的值))
  • B5单元应计算:(储存格A5 *(2 / 8-1)的值+储存格B4 *(1-2 / 8 + 1)的值))
  • 单元格B6应该计算:(单元格A6 *(2 / 8-1)的值+单元格B5 *(1-2 / 8 + 1)的值))
  • 依此类推....在列中向下
  • 附上的屏幕截图只是一个类似问题的示例,尽管计算几乎具有相同的性质,但公式中的列是不同的。我什至尝试将值更改为公式,但是结果相同,并且值不会自动调整。

我按照建议以文本格式粘贴我的公式。通过'期望结果',我的意思是VBA计算出的数字与使用公式计算出的数字不同。 VBA计算错误。

上面的图像仅表示类似情况。

经过一段时间的搜索之后,我开始考虑是否可以将带Redim保存的数组以任何方式解决问题?

问题在于使用'activecell'代替'rng',而不是'select'。

...
A B
1
17
< [
请尝试使用此代码:

Sub ResultAchieved() Dim variableA As Long, sh As Worksheet, q As Long, rng As Range variableA = Worksheets("DATA").Range("D7").Value Set sh = Worksheets("MyCalculation") For q = 4 To 50 ' sh.Cells(sh.Rows.count, "A").End(xlUp).Row Set rng = sh.Range("B" & q) rng.value = (rng.Offset(0, -1).Value * (2 / (variableA + 1)) + _ rng.Offset(-1, 0).Value * (1 - (2 / (variableA + 1)))) Next q End Sub

excel vba offset
1个回答
0
投票
请尝试使用此代码:
© www.soinside.com 2019 - 2024. All rights reserved.