我正在尝试创建一个大型电子表格(10,000行公式),从另外两张表中获取信息。我想要的基本布局是:
Row1
=Sheet1!A7
=Sheet2!M7
=Sheet1!A8
=Sheet2!M8
=Sheet1!A9
=Sheet2!M9
...etc.
当我尝试使用公式自动填充时,excel会选择错误的模式,我最终会得到这样的结果:
=Sheet1!A7
=Sheet2!M7
...
=Sheet1!A11
=Sheet2!M11
=Sheet1!A17
=Sheet2!M17
我给了excel 10细胞以使图案基础,并且无法使其工作。任何人都可以帮我弄清楚如何做到这一点(希望没有VBA)?
答案 0 :(得分:4)
尽量避免使用OFFSET function或INDIRECT / ADDRESS函数对来支持INDEX function和一些数学。
在前两个单元格中使用这两个公式。
=INDEX(Sheet1!A:A, 7+ROW(1:1)/2)
=INDEX(Sheet2!M:M, 7+ROW(1:1)/2)
选择两个单元格并向下拖动“填充手柄”。
¹当整个工作簿中的任何内容发生变化时,不仅在影响其结果的某些内容发生变化时,挥发性函数都会重新计算。 易失性函数的示例包括INDIRECT,OFFSET,TODAY,NOW,RAND和RANDBETWEEN。 CELL和INFO工作表函数的某些子函数也会使它们变得不稳定。
答案 1 :(得分:2)
这是一个设置链接的简单 VBA 宏。使用它直到出现非 VBA 解决方案:
Sub propagator()
Dim i As Long, k As Long
k = 1
For i = 7 To 99
Cells(k, 1).Formula = "=Sheet1!A" & i
k = k + 1
Cells(k, 1).Formula = "=Sheet2!M" & i
k = k + 1
Next i
End Sub
只需选择目标工作表并运行宏。
调整 99 以满足您的需求。
答案 2 :(得分:1)
你可以在没有VBA的情况下用一些=INDIRECT
技巧来解决这个问题 - 以下内容位于“Sheet3”中:
您可以分别在单元格Sheet1!A
和Sheet2!M
中输入A1
和A2
,然后填写。然后,在7
中输入B1
,在B2
中输入公式 - 再次填写。第一个公式有效地将计数递增2。最后,您可以在C1
中输入公式并填写。
答案 3 :(得分:1)
使用INDIRECT
功能构建此功能,您可以根据当前行号使模式正常工作。假设您的第一个单元格位于第2行:
=INDIRECT("Sheet1!A" & 7+(ROUNDDOWN(ROW()/2,0)-1))
=INDIRECT("Sheet2!M" & 7+(ROUNDDOWN(ROW()/2,0)-1))
ROW()
返回当前行,然后除以2(因为每两个单元格只增加一行参考),然后减去1(因为我们希望第一次调整为0)。 / p>
答案 4 :(得分:1)
尝试第2行:
=INDIRECT("Sheet1!A" & 7 +QUOTIENT(ROW()-2,2))
在第3行:
=INDIRECT("Sheet2!M" & 7 +QUOTIENT(ROW()-2,2))
突出显示并复制。