VBA进行数据操作有天然的优势,不仅可以快速提高数据查找,排序等操作,还可以减少人为的操作失误。
本文介绍一个小技巧,实现工作表任意区域内的数据行,转换为列,还可以根据条件进行查询。
上图为本示例的演示结果。
黄色区域为原始数据,绿色区域为查找和转置后的结果。
其功能为查询第一列的内容,如果不是数字格式,就全部行数据转置为列,如果不是数字就只查找某一个列的数据。
下图为操作界面:
示例中应用了3个RefEdit控件,此控件可以选择工作表中的单元格,可以大提高本示例的灵活性。任意选择要操作的数据区域。
代码:
Private Sub selectStation() On Error Resume Next Dim R As Range, sR As Range, ci As Long Set R = Range(Me.RefEdit1.Value) Set sR = Range(Me.RefEdit2.Value) ci = Range(Me.RefEdit3.Value).Column If R Is Nothing Then Exit Sub If sR Is Nothing Then Exit Sub If VBA.Err.Number <> 0 Then Exit Sub GetList R, sR, ci Set R = Nothing Set sR = Nothing End Sub
函数:
Public Function GetList(R As Range, sR As Range, xci As Long) 'R 为要查询单元区域 'sR 查询结果开始单元格 'xci 返回不是数字列号 On Error Resume Next Dim cArr, ri As Long, ci As Long ReDim cArr(R.Columns.Count) For ri = 1 To R.Rows.Count If VBA.IsNumeric(R.Cells(ri, 1).Value) Then With sR.Offset(0, ci).Resize(R.Columns.Count, 1) .Value = cArr End With Else sR.Offset(0, ci).Value = R.Cells(ri, 1).Value sR.Offset(1, ci).Value = R.Cells(ri, xci).Value End If ci = ci + 1 Next ri Erase cArr End Function
逻辑上,本示例还是进行一些相对特定的操作,实际应用中,可以根据自己的需求进行一些修改,以便更加符合自己的结果。
欢迎关注、收藏
—END—
本文【vba编程从入门到精通教程,vba按条件提取行数据】由作者: 递归 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4660.html