发布网友 发布时间:2022-04-24 03:39
共3个回答
热心网友 时间:2022-04-11 11:39
你好,用下列函数可以实现Excel的查询功能,可以在一张工作表查询本工作表的数据,也可以是另一张工作表的数据,甚至可以是其他工作簿的数据(路径改变之后就不行了)。
在需要显示查询值的单元格中输入下列公式:
=if(iserror(vlookup(lookupvalue,findarea,column,0)),"",vlookup(lookupvalue,findarea,column,0))
解释:
lookupvalue--------需要查询的数据(目标值),也就是你要输入的姓名、性别等以用来查询值的那个单元格地址。
findarea-----------即查询的数据来源区域,可是查询目标所在的整个工作表的地址。
column------------你需要查询的目标值所在的列,从finderea的列一列开始数,第一列为对应的column为1,第二列为2……
0-----------------模糊查询,即忽略是否排序对查询的影响(不要求查询区域事先排列)。
整个函数组合的解释:
Vlookup函数一般是先输入目标值再查询,当改变目标值之后会出错,即iserror,所以上面用的函数可以解释为:如果所查寻的目标值是错误的(即查不到),那么形式为空,如果不出错(可查到,即目标值存在),那么查询并显示该目标值。
热心网友 时间:2022-04-11 12:57
以下 进销存 为数据库 查询 根据实际情况自己修改
Private Sub CommandButton1_Click11111111111()
Dim str$, icol As Byte
Dim rng As Range
Dim Arr, k%
str = "*" & [c1] & "*"
ReDim Arr(1 To 9, 1 To 1)
k = 0
With Sheets("进销存")
For Each rng In .Range("D2", .[A65536].End(3))
If rng(1, 2) Like str Then
k = k + 1
ReDim Preserve Arr(1 To 9, 1 To k)
For icol = 1 To 9
Arr(icol, k) = rng(1, icol)
Next
End If
Next
End With
Rows("4:65536").Delete
[D2].Resize(k, 9) = Application.Transpose(Arr)
End Sub
Sub CommandButton1_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL$, DataSource$
Application.ScreenUpdating = False
DataSource = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;Imex=1';Data Source=" & DataSource
SQL = "select * from [进销存$] where 物品名称 ='" & Sheets("查询").Range("E1") & "'"
rs.Open SQL, cn ', adOpenKeyset, adLockOptimistic
Range("A3").CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
热心网友 时间:2022-04-11 14:31
可以用“筛选”这个功能,在菜单里,对两个列进行筛选,符合条件的就会显示出来。很简单。追问呵呵,谢谢,不过查询的过程和结果显示都是在另一个表格里,因为数据表格的所有数据最好是不能全部显示出来。相当于拐个弯儿。我了解有点儿神经,可是公司让这么整我也没辙啊。