如何在excel表格中,把某一区域内所有不及格学生的名字都提取到另外指定的单元格里

把上表中各班不及格学生名单,自动提取到下表对应班级的单元格中,要求各班所有不及格学生的名字都提取到同一个单元格中

写了个代码
使用方法,首先【选中】学生和成绩区域,比如图中的A5:D14(有多少,选多少)
然后执行代码
会在选中区域的下面5行开始,生成需要的名单

Sub n()
x1 = Selection(1).Row
y1 = Selection(1).Column
x2 = Selection(Selection.Count).Row
y2 = Selection(Selection.Count).Column
For i = y1 + 1 To y2 Step 2
For j = x1 To x2
If Cells(j, i) <> "" And Cells(j, i) < 60 Then
o = o & Cells(j, i - 1) & "、"
End If
Next j
k = k + 1
Cells(x2 + k + 5, y1) = Cells(x1 - 2, i - 1)
Cells(x2 + k + 5, y1 + 1) = Left(o, Len(o) - 1)
o = ""
Next i
End Sub追问

先谢谢你!
很不好意思,能不能把行代码的意思说一下,我想学习一下。另外怎样执行代码?

追答

执行代码:Alt+F11进入VBA编辑界面,选择并双击左侧的数据所在的工作表(一般是sheet1),然后在中间空白处,粘贴上上述代码,关闭这个界面,返回工作表,Alt+F8,在弹出的新界面中选择并双击sheet1.m,就行了

代码意思:
x1=选择区域最左侧的行号
Y1=选择区域的最上方列号
x2=选择区域最右侧的行号
Y1=选择区域的最下方列号
i是依次循环的列,分别是Y1+1到Y2,中间跳1
j是以此循环的行,从x1循环到x2
如果单元格(成绩)空,并且<60
那么单元格内容与”、”合并成新的一个字符串
返回重新循环
当一列循环结束,
将o的值写入新的单元格中
并且清空o
继续下一列的循环

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-28
这个要求用公式应该很难吧,建议用VBA写宏代码。
不过图片上连个很列标都没有。追问

重新发了两个图,麻烦你看看帮写个,最好符上每句的解释

追答

哦,有人写了,我就不写了,

追问

X1 = 怎么会是最左侧的行号?最左侧不应该是列号吗?X、Y的意思是不是反了?o=o是什么意思?为什么我把安全性投为低了还提示安全级别被设为高

追答

继续追问他吧,别人的代码由我解释,不合适,

相似回答