有一个excel工作表,其中有几个工作表,这些工作表都标记不同,根本没有模式(即; Sheet1,Sheet2,Sheet3等)
在单元格B2
的第一个工作表中,我的值为90
,并希望其他所有工作表自动将值增加1。
希望第二个工作表在91
上的值为B2
,依此类推,
我知道我可以繁琐地添加=SUM('WorksheetName'!B2 +1)
来执行此操作,但需要永远,因为我必须手动键入每个实例的工作表名称
有什么方法可以添加一些VBA吗?或另一个公式?
答案 0 :(得分:1)
如何完成任务的另一个例子。添加了对原始工作表的检查
Sub SetWorksheetValues()
Dim ws As Worksheet
Dim firstWS As Worksheet
Dim cValue As Long
Dim counter As Long
'set the counter to 2
counter = 2
'set the first worksheet that has our beginning value
Set firstWS = ThisWorkbook.Worksheets("101")
'get the value and increment by 1
cValue = firstWS.Range("B1").Value + 1
For Each ws In ThisWorkbook.Worksheets
'skip the worksheet with our starting value
If ws.Name <> firstWS.Name Then
'set the cell value
ws.Range("B" & counter).Value = cValue
'increment each value by 1
cValue = cValue + 1
counter = counter + 1
End If
Next ws
End Sub
测试它
创建工作簿并在其中添加模块。 运行以下宏
Sub AddLotsOfWorksheets()
Dim i As Long
Dim c As Long
Dim ws As Worksheet
c = 101
For i = 1 To 250
Set ws = ThisWorkbook.Worksheets.Add(Before:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
ws.Name = CStr(c)
c = c + 1
Next i
End Sub
在表101中的B1中添加1(或90)
运行SetWorksheetValues
如果输入1,则单个350单元格B250的值应为250 要么 339如果输入90.
答案 1 :(得分:0)
如果我理解正确,这应该做你想要的。
Sub x()
Dim i As Long, n As Long
n = 90
For i = 1 To Worksheets.Count
Sheets(i).Range("B1").Offset(i - 1).Value = n + i - 1
Next i
End Sub