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
谢谢成都豺狼,谢谢各位。我会认真学习各们的辛勤劳动成果。 展开
我想实现这样功能,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
谢谢成都豺狼,谢谢各位。我会认真学习各们的辛勤劳动成果。 展开
3个回答
展开全部
按你的要求,从最后一条记录向前检索,代码如下:
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
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
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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")。
好好学习,天天向上!
这句话写的不对,你可以像“成都豺狼”那样用等式,也可以用copy,格式如:sheets(2).cells(i,1).Copy Destination:=sheets(1).Range("B2")
附:你的sheet1的写法好像也不恰当,写为sheets(1)或者worksheets("Sheet1")。
好好学习,天天向上!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询