我想知道你是否可以帮助我。
我有一张带有两张纸的excel文件,'数据'和'输出'。我正在使用单元格引用=data!A1
。但我希望它能推进十行,例如=data!A11
每次excel刷新(刷新我的意思是,每次运行公式时都会=rand
。
需要像这样运行的原因是单元格需要为每页打印提前10个空格。
如果您需要更多信息,请与我们联系。
编辑:对不起,如果我一开始并不清楚,我需要一个宏或公式来推进“单元格参考”'十行,在excel刷新。上面的例子。
答案 0 :(得分:1)
您可以在此处使用此公式。
=OFFSET(<Starting_Cell>,(ROW()-<Current_Row>)*<Inc>,0)
更具体地说,这里应该有效。
=OFFSET($A$1,(ROW()-1)*10,0)
答案 1 :(得分:1)
您可以捕获各种各样的事件,但我认为它们中的任何一个都不能满足您的确切需求。
您可以将其添加到ThisWorkbook
模块:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
只要工作簿中的某些内容发生更改,就会运行此子代码中的代码。但根据你对你的要求的解释,我认为这是不合适的,原因有两个:
=Rand()
的单元格中看到更改您可以在ThisWorkbook
:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
End Sub
顾名思义,它将在任何打印操作之前运行。每个工作簿会触发一次;在工作表级别没有等价物(尽管简单地遍历每个工作表很容易)。此外,它发生之前打印;我假设您希望公式随后增加。
我认为最好的选择是创建一个执行整个操作的宏:
ThisWorkbook.PrintOut
,或遍历每张表并致电sheet.PrintOut
OFFSET
函数(请参阅BigRabbit的答案)来引用递增的单元格。答案 2 :(得分:0)
这个,内置于其他答案似乎是解决方案。谢谢大家的帮助。
Sub Auto_Open()
Dim currentRow As String
Dim sTemp As String
sTemp = Range("C18").Formula
Do While (IsNumeric(Right(sTemp, 1)))
currentRow = Right(sTemp, 1) & currentRow
sTemp = Mid(sTemp, 1, Len(sTemp) - 1)
Loop
currentRow = CLng(currentRow) + 11
Range("C18").Formula = sTemp & currentRow
End Sub