繁体   English   中英

查找给定范围内的所有非零单元格,并在另一张工作表中列出其地址

[英]Find all non-zero cells in a given range and list their addresses in another sheet

我在excel(720x720)中有一张巨大的表格,我想在其中查找非零值。 找到值后,我想在两列的新工作表上获取该行的前两个单元格,将要查找的单元格放在第三个单元格中,而我要在两个单元格的列中找到前两个单元格其他列。

例如,如果我的值在工作表1的E26 R89和Z9中,我想在工作表2上获得一个如下表:

      A      B      C     D     E
1    A26    B26    E26    E1    E2   
2    A89    B89    R89    R1    R2
3    A9     B9     Z9     Z1    Z2

这是到目前为止我尝试过的(请记住,您正在与初学者交谈)

Sub tests_selection()
    Dim r As Worksheet
    Dim c As Workbook, f As Worksheet
    Set c = Workbooks("classeur1")
    Set f = c.Worksheets("feuil1")

    Dim a(5200)
    Dim b

    b = 0

    Range("A1:AAU723").Select
    For i = 4 To 720
        For j = 4 To 723
            If f.Cells(i, j).Value <> 0 Then
            a(b) = f.Cells(i, j).Adress
            b = b + 1
            End If

        Next j
    Next i

    Set r = c.Worksheets("result")

    For i = 0 To b
        r.Cells(i, 1).Value = a(i)
    Next i    
End Sub

表例
表例

结果示例
结果示例

首先,您应该使用有意义的变量名,而不是仅使用1个字符。 这使您的代码更易于理解和可读,因此减少了错误。

还可以使用Option Explicit强制进行正确的变量声明。

Option Explicit

Sub tests_selection()
    Dim SrcWs As Worksheet
    Set SrcWs = Worksheets("feuil1") 'source worksheet

    Dim ResultWs As Worksheet
    Set ResultWs = Worksheets("result") 'result worksheet

    Dim rRow As Long
    rRow = 2 'start row in result sheet

    Dim iCell As Range
    For Each iCell In SrcWs.Range("C4:AN40") '<-- make sure to adjust the range to the data only! so header rows are not included
        If iCell.Value <> 0 Then
            ResultWs.Cells(rRow, 1).Value = SrcWs.Cells(iCell.Row, 1).Value
            ResultWs.Cells(rRow, 2).Value = SrcWs.Cells(iCell.Row, 2).Value
            ResultWs.Cells(rRow, 3).Value = iCell.Value
            ResultWs.Cells(rRow, 4).Value = SrcWs.Cells(1, iCell.Column).Value
            ResultWs.Cells(rRow, 5).Value = SrcWs.Cells(2, iCell.Column).Value

            rRow = rRow + 1
        End If
    Next iCell
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM