我正在处理一个项目,其中检查所有行和多列的多个条件。问题是从工作表中添加/删除列,并且目前导致我的所有单元格(行,列)引用都关闭+输出不正确的信息。我想知道是否有办法让我的列引用更加健壮,以便它们自动找到正确的标题并在检查时使用它们?此问题的解决方案是否能够考虑包含完全相同的标题文本的多个列?
基本上:
请在下面找到我当前代码的简短示例,并附注:
Dim i As Integer
Dim lastRow As Long
Dim lastCol As Long
lastRow = Range("A1").End(xlDown).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 2 To lastRow
Select Case Cells(i, 14).Value
Case Is = "Yes"
Select Case True
Case Cells(i, 63).Value = 6 And _
(IsEmpty(Cells(i, 77)) Or IsEmpty(Cells(i, 93)) Or IsEmpty(Cells(i, 109)) Or _
IsEmpty(Cells(i, 125)) Or IsEmpty(Cells(i, 141)) Or IsEmpty(Cells(i, 157)))
Cells(i, 174).Value = "True" '^THESE CELL VALUES ALL HAVE THE SAME COLUMN HEADER TITLE
答案 0 :(得分:2)
如果表格一致 - 从A1开始并占用一个连续的块 - 那么Range("A1").CurrentRegion
将引用该表。
然后,您可以根据标题使用.CreateNames
命名列(即使用命名范围)。
Dim rngTable As Range
Dim rng As Range
Set rngTable = Range("A1").CurrentRegion
rngTable.CreateNames True, False, False, False
' that is, based on the first row headings
Range("Salary").Select 'prove it works
'if necessary, iterate the cells of the column,
For Each rng In Range("Salary")
rng.Value = rng.Value + 10
Next 'rng
如果列标题重复(“财务”),那么您将被要求确认,第二次出现将否决第一次出现。 (或者你可以说“不”,第一次出现将被命名。)在这种情况下,你最好先纠正这些重复的标题。
纠正重复的标题不一定是直截了当的,但无论如何都应该解决。如果它是可以复制的特定单词“财务”(或单词),那么这使得任务更容易。您可以计算有多少次出现,并将第二次等等更正为“Financials2”。
答案 1 :(得分:1)