gpt4 book ai didi

vba - 使用范围对象中的行属性进行匹配/查找

转载 作者:行者123 更新时间:2023-12-03 03:24:38 28 4
gpt4 key购买 nike

我正在 Excel VBA 中创建一个公式,以解析单元格中以逗号分隔的“部分”列表。在另一个工作表中查找具有该零件名称的单元格,然后使用找到的该单元格的地址来获取同一行不同列的零件成本。我为此工作了数小时,并仔细阅读了在线文档,但卡在这里。

这是有问题的代码:

Public Function PartCost() As Integer
Dim PList() As String
PList = Split(Cells(Application.Caller.Row, 4).Value, ", ")

Dim element As Variant
Dim curCell As Variant
PartCost = 0

For Each element In PList
curCell = Worksheets("Parts List").Range("A1:A100").Find(element)
PartCost = PartCost + Cells(curCell.Row, 3).Value
Next element
End Function

基本上,通过使用 MsgBox,我发现它确实找到了其他“零件列表”工作表中的条目,但如果我使用 curCell 打印出地址、行或列,我不会得到任何结果。

最佳答案

curCell = Worksheets("Parts List").Range("A1:A100").Find(element)

正在查找单元格并将值放入变量而不是范围中。您需要将 curCell 声明为范围,然后设置变量。

Public Function PartCost() As Integer
Dim PList() As String
PList = Split(Cells(Application.Caller.Row, 4).Value, ", ")

Dim element As Variant
Dim curCell As Range
PartCost = 0

For Each element In PList
Set curCell = Worksheets("Parts List").Range("A1:A100").Find(element)
PartCost = PartCost + Cells(curCell.Row, 3).Value
Next element

此外,如果未找到该值,那么 curcell 将毫无意义,您需要进行检查以确保找到该值。

Public Function PartCost() As Integer
Dim PList() As String
PList = Split(Cells(Application.Caller.Row, 4).Value, ", ")

Dim element As Variant
Dim curCell As Range
PartCost = 0

For Each element In PList
Set curCell = Worksheets("Parts List").Range("A1:A100").Find(element)
If Not curCell Is Nothing Then
PartCost = PartCost + Cells(curCell.Row, 3).Value
End If
Next element

关于vba - 使用范围对象中的行属性进行匹配/查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48508603/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com