VBA EXCEL 查找并输出结果

我想学一下VBA,所以请别告诉我不必用VBA。我想实现这样功能,SHEET2存有数据:编号学号姓名性别年龄分数12020106105张三女208522020306148李... 我想学一下VBA,所以请别告诉我不必用VBA。
我想实现这样功能,SHEET2存有数据:

编号 学号 姓名 性别 年龄 分数
1 2020106105 张三 女 20 85
2 2020306148 李四 男 19 86
3 2020306204 王五 女 19 93
4 2020306215 赵六 男 20 90
5 2020306220 刘二 女 20 77

我在SHEET1的随便某一个单元格里如“H5”输入查询条件,如“女”,点击预设按钮,则将查到的结果,应该是三行数据,添加到SHEET1的从A2开始的单元格里,但是我没有弄对,用了NEXT语句,最好只输出一个结果,也就是最后一个性别为“女”的即第五条数据。

Private Sub CommandButton1_Click()

For i = 2 To 50
For j = 1 To 6
XX = Sheet2.Cells(i, j).Value

If XX = Sheet1.Range("h5") Then
Sheet2.Cells(i, 1).Copy Sheet1.Range("a2")
Sheet2.Cells(i, 2).Copy Sheet1.Range("B2")
Sheet2.Cells(i, 3).Copy Sheet1.Range("C2")
Sheet2.Cells(i, 4).Copy Sheet1.Range("D2")
Sheet2.Cells(i, 5).Copy Sheet1.Range("E2")
Sheet2.Cells(i, 6).Copy Sheet1.Range("F2")
End If

Next j
Next i

End Sub

请大侠们不吝赐教。另外,中间COPY数据那一段,肯定是极笨的办法,不知该怎么弄。
谢谢。
不要用筛选,谢谢.

按照糊涂先生的写法,好像还是通不过。但是我用了一种比较愚蠢的法子,按原来的行号复制,然后再排序。倒是能满足我的需要了。

Private Sub CommandButton1_Click()
Sheet1.Range("a1:f50").Clear
Sheet2.Range("a1:f1").Copy Sheet1.Range("a1")
num = Sheet2.Range("a65536").End(xlUp).Row For i = num To 2 Step -1
For j = 1 To 6
If Sheet2.Cells(i, j) = Sheet1.Range("h5") Then
Sheet2.Range(Sheet2.Cells(i, 1), Sheet2.Cells(i, 6)).Copy
Sheet1.Range("A" & i).PasteSpecial
End If
Next j
Next i

With Sheet1.Sort
.SetRange Range("A2:F50")
.SortMethod = xlPinYin
.Apply
End With
Sheet1.Range("h5").Select

End Sub

谢谢成都豺狼,谢谢各位。我会认真学习各们的辛勤劳动成果。
展开
 我来答
檀桖鲆0gLc97
2009-04-23 · TA获得超过3190个赞
知道大有可为答主
回答量:952
采纳率:0%
帮助的人:1715万
展开全部
按你的要求,从最后一条记录向前检索,代码如下:
Private Sub CommandButton1_Click()
Sheet2.Activate
num = Range("a65536").End(xlUp).Row '检索最大记录数
For i = num To 2 Step -1
For j = 1 To 6
If Cells(i, j) = Sheet1.Range("h5") Then
Range(Cells(i, 1), Cells(i, 6)).Copy '复制找到的记录区域
Sheet1.Range("A2").PasteSpecial '粘贴到sheet1的第二行
GoTo ppp
End If
Next j
Next i
ppp:
End Sub
成都豺狼
2009-04-23 · TA获得超过658个赞
知道小有建树答主
回答量:661
采纳率:0%
帮助的人:342万
展开全部
Private Sub CommandButton1_Click()
j=1
For i = 2 To 50

If Sheet2.Cells(i, j)= Sheet1.Range("h5") Then
j=j+1
Sheet1.cells(j,1) =Sheet2.Cells(i, 1)
Sheet1.cells(j,2) =Sheet2.Cells(i, 2)
Sheet1.Sheet1.cells(j,3)=Sheet2.Cells(i, 3)
Sheet1.Sheet1.cells(j,4) =Sheet2.Cells(i, 4)
Sheet1.Sheet1.cells(j,5) =Sheet2.Cells(i, 5)
Sheet1.Sheet1.cells(j,6) =Sheet2.Cells(i, 6)
End If
Next i

End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haozili2000
2009-04-23
知道答主
回答量:14
采纳率:0%
帮助的人:3.3万
展开全部
Sheet2.Cells(i, 1).Copy Sheet1.Range("a2")
这句话写的不对,你可以像“成都豺狼”那样用等式,也可以用copy,格式如:sheets(2).cells(i,1).Copy Destination:=sheets(1).Range("B2")
附:你的sheet1的写法好像也不恰当,写为sheets(1)或者worksheets("Sheet1")。
好好学习,天天向上!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式