使用大型数据集引用多个表

时间:2014-07-16 21:26:52

标签: excel vba excel-vba

我对VBA相当新,并且在基本语法方面存在一些普遍的障碍。我正在使用以下代码修剪前导空格和颜色代码我正在处理的ActiveSheet。

我有另一个名为“Country”的工作表,我想将相同的逻辑应用于我正在使用的当前工作表。我也很难使用最有效的代码来查找值为“AcctTotal”,“CurrTotal”和“BravoTotal”的任何单元格(大约有14,000行数据)。我目前正在强调整个电子表格,并使用“UsedRange”来查找这些单元格。

总结一下: 我想在两个工作表中修剪前导空格和颜色代码“AcctTotal”,“CurrTotal”和“BravoTotal”的任何值:“Currency”和“Country”

SubColorCodeCurrency()

Dim r As Range
For Each r In Selection
    If r.Value = " AcctTotal" Then
        r.Value = LTrim(r.Value)
        Intersect(r.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 15
    End If
Next r

Dim s As Range
For Each s In Selection
    If s.Value = " CurrTotal" Then
        s.Value = LTrim(s.Value)
        Intersect(s.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 40
    End If
Next s

Dim t As Range
For Each t In Selection
    If t.Value = " BravoTotal" Then
        t.Value = LTrim(t.Value)
        Intersect(t.EntireRow, ActiveSheet.UsedRange).Interior.ColorIndex = 35
    End If
Next t

End Sub

3 个答案:

答案 0 :(得分:0)

大多数问题是你三次做同样的事情。 ' For Each'声明正在经历每个细胞三次。如果你加入了

    for each r in selection
 if r.value ="AcctTotal" then 
'do something 
elseif r.value = "CurrTotal" then 
'do something else 
elseif r.value = "BravoTotal" then 
'do the third thing 
end if

答案 1 :(得分:0)

除了Maudise所说的,当您引用数据时,您可以使用如下语法:

Sheets("Country").Range("A1:E14000")

如果可以对源数据进行更改,您可能会发现将其格式化为表格以便于参考是有帮助的。使用名称管理器为表提供有用的名称。然后,你可以这样说:

For Each r In Sheets("Country").Range("CountryTable")

答案 2 :(得分:0)

您可以尝试这种方式:

Public Sub ColorCode ()

Dim i As Integer, j As Integer, m As Integer, n As Integer

i = Range("A:A").End(xlDown).Row
j = Cells.End(xlToRight).Column

For m = 1 To i
    For n = 1 To j
        If Cells(m, n).Value < 50 Then
            Cells(m, n).Interior.ColorIndex = 13
        End If
    Next n
Next m
End Sub

一种解决方案是将放置在模块中的代码调用到“Private Sub Workbook_Open()”中的“This workbook”。