|
楼主 |
发表于 2023-10-29 10:30
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
再次提问:你上面的代码完美实现了我的要求。现在我想锦上添花,再实现这样一个功能:就是在座次表中用红色标出女生。为此,我重新表述一下我的需求:Excel工作表sheet1的中A列中有若干个学生姓名,B列相应显示每个学生的性别。现在想把这些姓名排列成教室的座次表形式,并在工作表sheet2中显示出来。要求座次表每一排坐十个学生,女生用红色显示。请给出vba代码。
再次得到回答:以下是一个使用 VBA 实现将学生姓名排列成教室座次表形式,并在工作表 sheet2 中显示出来,并且女生用红色显示的示例代码:
Sub FillSeatChart()
' 假设学生姓名存储在工作表 "Sheet1" 的 A 列中
Dim sheet1 As Worksheet
Set sheet1 = Worksheets("Sheet1")
' 假设学生性别存储在工作表 "Sheet1" 的 B 列中
Dim sheet2 As Worksheet
Set sheet2 = Worksheets("Sheet2")
' 获取学生姓名的数量
Dim studentCount As Integer
studentCount = sheet1.Cells(sheet1.Rows.Count, "A").End(xlUp).Row
' 计算需要的行数和列数
Dim rowCount As Integer
rowCount = (studentCount + 9) \ 10
Dim colCount As Integer
colCount = (studentCount + 9) Mod 10
' 清除座次表中的数据
sheet2.Cells.ClearContents
' 将学生姓名填入座次表中
For i = 1 To studentCount
Dim studentName As String
studentName = sheet1.Cells(i, "A").Value
Dim studentSex As String
studentSex = sheet1.Cells(i, "B").Value
Dim row As Integer
row = (i - 1) \ 10 + 1
Dim col As Integer
col = (i - 1) Mod 10 + 1
If studentSex = "女" Then
sheet2.Cells(row, col).Interior.Color = RGB(255, 0, 0)
End If
sheet2.Cells(row, col) = studentName
Next
End Sub
上述代码使用了 VBA 的工作表对象和单元格对象来读取和写入数据。首先,代码获取了学生姓名的数量,并计算了需要的行数和列数。然后,代码清除了座次表中的数据,并将学生姓名填入座次表中。具体来说,代码使用了一个循环遍历学生姓名,并根据座次表的布局将学生姓名填入相应的单元格中。如果学生性别为"女",则将该单元格的背景色设置为红色。
|
|