在Sheet1中,除其他外,还有按学生证及其年级划分的学生列表。在工作簿中,每个学生都有单独的工作表。工作表根据学生ID命名。我需要将每个学生的年级复制到他们的特定工作表中。必须为所有学生完成。
例如,AA列包含学生ID,AB列包含每个学生的成绩等级。我需要将4年级学生12345复制到工作表12345单元格F1中。然后,我需要转到下一个学生并做同样的事情,直到没有更多学生为止。
我尝试了很多方法,但是我一直陷于困境。我发现了一些接近的示例,但是总是错过使它起作用的关键事项,因此我希望有人能够帮助我入门。我觉得应该很容易,但是还没有事实证明。
编辑:
我正在尝试逐步解决问题。在一个简单的测试文件中,我尝试了:
Dim I As Long
For I = 1 To Sheets.Count
Worksheets(I).Activate
Workbooks("StuData.xlsm").Sheets(I).Range("F1").Value = Workbooks("StuData.xlsm").Sheets("Sheet1").Cells(I, 2)
Next
然后我尝试了:
Dim Sheetname as String
Sub activateSheet(sheetname As String)
Worksheets(sheetname).Activate
End Sub
您不需要VBA即可执行此操作。
首先在工作簿范围内的字段中创建以下命名公式(Ctrl+F3
-> New
)。输入与下面完全相同的内容,然后单击:SheetName
Name:
Refers to:
OK
=RIGHT(CELL("FILENAME",!$A$1),LEN(CELL("FILENAME",!$A$1))-FIND("]",CELL("FILENAME",!$A$1),1))
确保!
在每个单元格地址的开头包括多余的部分!很重要。快速说明:尽管它适用于整个工作簿,但!
单元格地址的开头使命名公式中的每个单元格地址都在当前工作表的上下文中进行评估。等效Sheetname
于每个工作表(针对每个工作表)具有不同的变量。
现在选择第一个学生表。按下Ctrl+Shift+PgDn
并重复,或者简单地按住Ctrl
并单击每个学生表,直到选中所有学生表。现在,您正在同时编辑所有学生表。
在F1
学生表格之一的单元格中(与哪一个无关),输入以下内容:
=INDEX('ALL STUDENTS SHEET'!$AB:$AB,MATCH(VALUE(SheetName),'ALL STUDENTS SHEET'!$AA:$AA,0))
(当然,您需要ALL STUDENTS SHEET
用第一张纸的名称代替。)
最后,通过选择第一张图纸来取消选择多张图纸,这样您就可以继续工作而无需同时编辑所有图纸。
编辑:请注意,为了SheetName
按预期工作,必须将工作簿保存到磁盘(即,直到CELL("FILENAME",<Cell Address>)
公式被保存,因为公式需要文件名,它才能在新工作簿上工作)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句