首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

vba多条件查找?

发布网友 发布时间:2022-04-20 23:10

我来回答

2个回答

热心网友 时间:2023-07-22 09:31

以下是一个可能的例子代码,其中假设条件工序代码在第1列,类产品在第2列,供应商级别在第3列,PPV值在第4列,并且数据的起始行为第2行。您可以根据您的实际情况进行相应的调整和修改。
```VBA
Sub sort_suppliers()
Dim ws As Worksheet
Dim lRow As Long
Dim FoundCell As Range
Dim strSearch As String
Dim sortRange As Range

'设置需要操作的工作表
Set ws = ThisWorkbook.Sheets("Sheet1")

'获取最后一行
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

'设置查找参数,如果需要可以将其改动为输入框让用户输入。
Dim cond_GXDM As String
cond_GXDM = "111" '条件工序代码
Dim cond_CPMC As String
cond_CPMC = "产品AB" '类产品
Dim cond_GYSJB As String
cond_GYSJB = "级别A" '供应商级别

'在第一图查找符合条件的单元格,将查找范围*在前三列中
Set FoundCell = ws.Range("A2:A" & lRow).Find(what:=cond_GXDM)
If Not FoundCell Is Nothing Then
Set FoundCell = ws.Range("B" & FoundCell.Row & ":D" & lRow).Find(what:=cond_CPMC & "," & cond_GYSJB)
If Not FoundCell Is Nothing Then
'找到相应行之后,利用Offset函数获取该供应商的PPV值
Set sortRange = FoundCell.Offset(0, 1).Resize(1, 1)
'向下查找并选取符合条件的单元格,将其合并为一区域
Do Until IsEmpty(FoundCell) Or FoundCell.Offset(0, -1) <> cond_GXDM
If FoundCell.Offset(0, 1) = cond_CPMC And FoundCell.Offset(0, 2) = cond_GYSJB Then
Set sortRange = Application.Union(sortRange, FoundCell.Offset(0, 3).Resize(1, 1))
End If
Set FoundCell = ws.Range("B" & FoundCell.Row + 1 & ":D" & lRow).Find(what:=cond_CPMC & "," & cond_GYSJB)
Loop
'按照PPV值从小到大排序
sortRange.Sort key1:=sortRange, order1:=xlAscending, Header:=xlNo
Else
MsgBox "无符合条件的供应商。"
End If
Else
MsgBox "无符合条件的记录。"
End If

End Sub
```
此代码仅供参考,具体操作需要根据您的实际需求进行调整和修改。

热心网友 时间:2023-07-22 09:31

如果使用office2021,可用函数就能解决
FILTER 根据条件筛选多条记录
SORT 对表格进行排序
两个函数,参考下

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com