代码之家  ›  专栏  ›  技术社区  ›  CATSandCATSandCATS

在VBA中引用没有固定地址的新列

  •  0
  • CATSandCATSandCATS  · 技术社区  · 5 年前

    我正试图找出如何引用紧跟在标有“total”的列前面的列。

    我的宏应该找到标记为“total”的列,在它前面插入一行,然后为指定的单元格循环使用sumif函数。我已经完成了插入一列部分的工作,但是我还不知道如何在编写sumif时引用这个新列。

    我正试图找到我写的参考资料。

    关于如何使这个参考工作有什么想法吗?

    谢谢!你说什么?

    为了提高透明度,我在这里从另一个用户的问题中插入了一个列代码。

    For s = LBound(sheetArray) To UBound(sheetArray)
            With sheetArray(s)
                With .Rows(7).SpecialCells(XlCellType.xlCellTypeConstants, xlTextValues)
                    Set f = .Find(what:="Total", LookIn:=xlValues, lookat:=xlWhole)
                    If Not f Is Nothing Then
                        firstAddress = f.Offset(, 1).Address 
                        Do
                            f.EntireColumn.Insert
                            Set f = .FindNext(f)
                        Loop While f.Address <> firstAddress
                    End If
                End With
            End With
        Next s
        
    'The above works.
    
        For s = 1 To UBound(sheetArray)
            With sheetArray(s)
                For i = 8 To 21
                    Set criteriaDept = sheetArray(s).Cells("B7")
                    Set criteriaSite = sheetArray(s).Cells(i, 3)
                    Set criteriaTherapy = sheetArray(s).Cells("C6")
                        sheetArray.Cells(i, [[HERE]]) = SumIf(sumIfRange, cSiteRange, criteriaSite,       
                            cDeptRange, criteriaDept, cTherapyRange, criteriaTherapy)
                Next i
            End With
        Next s
    1 回复  |  直到 5 年前
        1
  •  1
  •   BruceWayne    5 年前

    首先,得到紧挨着“total”前面的列号(通过“preceding”,我假设您是指左边的列号):

    Dim preCol as Long
    preCol = Sheets("Sheet1").Rows(1).Find(what:="Total").Offset(0, -1).Column
    'Now, you can use that variable:
    ' ...whatever
    sheetArray.Cells(i, preCol) = ...
    

    请注意,您可能需要更改/更新 Sheets("Sheet1") 任何一张纸都有这个列标题。