表格ListObject不仅限于表格的行,还可以计算整个工作表

吉恩

我使用insert / table命令在excel中创建了两个命名表,并将它们命名如下。在Excel中,一切看起来都很好。表House_details的行计数是50,包括标题行,而Sale_price_schedule 15的行计数包括标题行。

我相关的VBA代码是

        Set tblHouseDetails = Sheets("House details").ListObjects("House_details")
        Set tblSalePriceSchedule = Sheets("Sale price schedule").ListObjects("Sale_price_schedule")
        'Find the product type, look for the relevant price and insert it into the appropriate house details column
        With tblHouseDetails.DataBodyRange
            For iCount = 2 To Rows.Count
                iTemp = Rows.Count
                strProductType = Cells(iCount, 5).Value 'The fifth columns is the product type
                dSaleDate = Cells(iCount, 3).Value 'The third column is the sale date
                'Find the correct sale price in the SalePriceSchedule
                '----------------------------
                dblSalePrice = -999
                With tblSalePriceSchedule.DataBodyRange
                    iTemp = Rows.Count
                    For iCount2 = 2 To Rows.Count
                        If Cells(iCount2, 3) = strProductType And Cells(iCount2, 1) <= dSaleDate And Cells(iCount2, 2) >= dSaleDate Then
                            dblSalePrice = Cells(iCount2, 4)
                        End If


                    Next iCount2
                End With
                '------------------------------
                Cells(iCount, 6) = dblSalePrice
            Next iCount
        End With

我的问题是tblHouseDetails行数不是我在Excel中定义的50行,而是整个工作表(1048576)。

为什么我的Rows.Count不正确?

弗洛伦特·B。

当单独使用“行”和“单元格”时,它们指的是“ ActiveSheet.Rows”和“ ActiveSheet.Cells”。

如果要引用“ With.DataBodyRange”中的范围,则需要在前面添加一个点(“ .Rows”,“。Cells”):

Set tblHouseDetails = Sheets("House details").ListObjects("House_details")
Set tblSalePriceSchedule = Sheets("Sale price schedule").ListObjects("Sale_price_schedule")
'Find the product type, look for the relevant price and insert it into the appropriate house details column
With tblHouseDetails.DataBodyRange
    For iCount = 1 To .Rows.Count
        iTemp = .Rows.Count
        strProductType = .Cells(iCount, 5).Value 'The fifth columns is the product type
        dSaleDate = .Cells(iCount, 3).Value 'The third column is the sale date
        'Find the correct sale price in the SalePriceSchedule
        '----------------------------
        dblSalePrice = -999
        With tblSalePriceSchedule.DataBodyRange
            iTemp = .Rows.Count
            For iCount2 = 1 To .Rows.Count
                If .Cells(iCount2, 3) = strProductType And .Cells(iCount2, 1) <= dSaleDate And .Cells(iCount2, 2) >= dSaleDate Then
                    dblSalePrice = .Cells(iCount2, 4)
                End If
            Next iCount2
        End With
        '------------------------------
        .Cells(iCount, 6) = dblSalePrice
    Next iCount
End With

但是更好的解决方案是将行用作变量:

Dim rowsA As Range, rowsB As Range
Set rowsA = tblHouseDetails.DataBodyRange.Rows
Set rowsB = tblSalePriceSchedule.DataBodyRange.Rows

'Find the product type, look for the relevant price and insert it into the appropriate house details column
For i = 1 To rowsA.Count
  strProductType = rowsA.Cells(i, 5).Value 'The fifth columns is the product type
  dSaleDate = rowsA.Cells(i, 3).Value 'The third column is the sale date

  'Find the correct sale price in the SalePriceSchedule
  dblSalePrice = -999
  For j = 1 To rowsB.Count
    If rowsB.Cells(j, 3) = strProductType And rowsB.Cells(j, 1) <= dSaleDate And rowsB.Cells(j, 2) >= dSaleDate Then
        rowsA.Cells(i, 6) = rowsB.Cells(j, 4)
    End If
  Next
Next

如果您正在寻找一种高性能的解决方案,那么我将使用数组中的值:

Dim dataA(), dataB(), i&, j&, strProductType$, dSaleDate, dblSalePrice

' Get all the values in an array
dataA = Sheets("House details").ListObjects("House_details").DataBodyRange.Value
dataB = Sheets("Sale price schedule").ListObjects("Sale_price_schedule").DataBodyRange.Value
For i = 0 To UBound(dataA)
  strProductType = dataA(i, 4) 'The fifth columns is the product type
  dSaleDate = dataA(i, 2) 'The third column is the sale date

  'Find the correct sale price in the SalePriceSchedule
  dblSalePrice = -999
  For j = 0 To UBound(dataB)
    If dataB(j, 2) = strProductType And dataB(j, 0) <= dSaleDate And dataB(j, 1) >= dSaleDate Then
        dataA(i, 5) = dataB(j, 3)
    End If
  Next
Next

' Copy the values back to the sheet
Sheets("House details").ListObjects("House_details").DataBodyRange.Value = dataA

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使SELECT ... WHERE IN工作于AND,而不仅限于OR?

来自分类Dev

是否可以将GUI不仅限于TTY7?

来自分类Dev

是否可以将GUI不仅限于TTY7?

来自分类Dev

CSS动画不仅限于容器吗?

来自分类Dev

Android模拟GPS卫星(不仅限于位置)

来自分类Dev

了解Google Cloud IAM政策-不仅限于此

来自分类Dev

如何动态获取整个输入值(不仅限于最后一个字符)?

来自分类Dev

如何在mysql / django中添加仅限于一行的表?

来自分类Dev

远程Powershell权限仅限于计算机

来自分类Dev

SignalR:工作进程仅限于10个并发请求

来自分类Dev

是否可以将NanoHttpd仅限于本地主机?

来自分类Dev

rub虫问题(但实际上不仅限于此)

来自分类Dev

rub虫问题(但实际上不仅限于此)

来自分类Dev

在SlideUp末尾调用的jQuery removeClass会从所有元素中删除,而不仅限于此

来自分类Dev

如何使用jquery替换完整的跨度,包括类等(不仅限于文本)?

来自分类Dev

使用httr和RCurl的415代码,但不仅限于curl

来自分类Dev

媒体查询不仅限于平板电脑和较小的屏幕尺寸

来自分类Dev

FileHelper属性仅限于字段/成员

来自分类Dev

有没有一种方法可以使PDFSharp中的安全设置在仅限于FIPS兼容算法的环境中工作?

来自分类Dev

计算泛型结构的大小,其中泛型参数仅限于基本类型

来自分类Dev

javascript正则表达式允许数字和特殊字符,但不仅限于零

来自分类Dev

是否可以在Swift中进行仅限于一类的Array扩展?

来自分类Dev

选择多个行,且重复项仅限于唯一的元行MySQL

来自分类Dev

Salesforce Soql查询仅限于自定义对象中的前150行

来自分类Dev

Salesforce Soql查询仅限于自定义对象中的前150行

来自分类Dev

为每一行生成特定数量的 1,但仅限于 x = 零的地方

来自分类Dev

Azure Functions中的1.5 GB内存限制是否仅限于整个Function App或每个函数调用?

来自分类常见问题

Vaadin Flow渲染器,不仅限于LocalDateTime和LocalDate类,还用于java.time日期-时间类型

来自分类Dev

MYSQL GROUP BY查询结果似乎仅限于31

Related 相关文章

  1. 1

    如何使SELECT ... WHERE IN工作于AND,而不仅限于OR?

  2. 2

    是否可以将GUI不仅限于TTY7?

  3. 3

    是否可以将GUI不仅限于TTY7?

  4. 4

    CSS动画不仅限于容器吗?

  5. 5

    Android模拟GPS卫星(不仅限于位置)

  6. 6

    了解Google Cloud IAM政策-不仅限于此

  7. 7

    如何动态获取整个输入值(不仅限于最后一个字符)?

  8. 8

    如何在mysql / django中添加仅限于一行的表?

  9. 9

    远程Powershell权限仅限于计算机

  10. 10

    SignalR:工作进程仅限于10个并发请求

  11. 11

    是否可以将NanoHttpd仅限于本地主机?

  12. 12

    rub虫问题(但实际上不仅限于此)

  13. 13

    rub虫问题(但实际上不仅限于此)

  14. 14

    在SlideUp末尾调用的jQuery removeClass会从所有元素中删除,而不仅限于此

  15. 15

    如何使用jquery替换完整的跨度,包括类等(不仅限于文本)?

  16. 16

    使用httr和RCurl的415代码,但不仅限于curl

  17. 17

    媒体查询不仅限于平板电脑和较小的屏幕尺寸

  18. 18

    FileHelper属性仅限于字段/成员

  19. 19

    有没有一种方法可以使PDFSharp中的安全设置在仅限于FIPS兼容算法的环境中工作?

  20. 20

    计算泛型结构的大小,其中泛型参数仅限于基本类型

  21. 21

    javascript正则表达式允许数字和特殊字符,但不仅限于零

  22. 22

    是否可以在Swift中进行仅限于一类的Array扩展?

  23. 23

    选择多个行,且重复项仅限于唯一的元行MySQL

  24. 24

    Salesforce Soql查询仅限于自定义对象中的前150行

  25. 25

    Salesforce Soql查询仅限于自定义对象中的前150行

  26. 26

    为每一行生成特定数量的 1,但仅限于 x = 零的地方

  27. 27

    Azure Functions中的1.5 GB内存限制是否仅限于整个Function App或每个函数调用?

  28. 28

    Vaadin Flow渲染器,不仅限于LocalDateTime和LocalDate类,还用于java.time日期-时间类型

  29. 29

    MYSQL GROUP BY查询结果似乎仅限于31

热门标签

归档