vba - Excel VBA 中的高效小写字母

标签 vba excel excel-2007

现在我使用下面的代码将整个列更改为小写。

我想知道是否有更有效的方法来做到这一点 - 我的工作表中有大约 150K 行。

需要一些时间才能完成,有时我会收到内存不足错误。

第一个子

Sub DeletingFl()
Dim ws1 As Worksheet
Dim rng1 As Range
Application.ScreenUpdating = False
Set ws1 = Sheets("Raw Sheet")

ws1.AutoFilterMode = False
Set rng1 = ws1.Range(ws1.[a1], ws1.Cells(Rows.Count, "A").End(xlUp))
rng1.AutoFilter 1, "Florida"
    If rng1.SpecialCells(xlCellTypeVisible).Count > 1 Then
    Set rng1 = rng1.Offset(1, 0).Resize(rng1.Rows.Count - 1)
    rng1.EntireRow.Delete
    End If
ws1.AutoFilterMode = False    
Call DeletingEC
End Sub

Sub DeletingEC()
Dim ws1 As Worksheet    
Dim rng1 As Range
Application.ScreenUpdating = False
Set ws1 = Sheets("Raw Sheet")

ws1.AutoFilterMode = False
Set rng1 = ws1.Range(ws1.[a1], ws1.Cells(Rows.Count, "A").End(xlUp))
rng1.AutoFilter 1, "East Coast"
If rng1.SpecialCells(xlCellTypeVisible).Count > 1 Then
    Set rng1 = rng1.Offset(1, 0).Resize(rng1.Rows.Count - 1)
    rng1.EntireRow.Delete
End If
ws1.AutoFilterMode = False
Worksheets("Raw Sheet").Activate    
Call Concatenating
End Sub

第二个子

Sub Concatenating()

Columns(1).EntireColumn.Insert
Columns(2).EntireColumn.Copy Destination:=ActiveSheet.Cells(1, 1)

Dim lngLastRow As Long
lngLastRow = Cells(Rows.Count, "A").End(xlUp).Row

    Range("A2:A" & lngLastRow).Formula = "=F2 & ""_"" & G2"
Range("A1").Select
    ActiveCell.FormulaR1C1 = "Title"       
Call LowerCasing
End Sub

Sub Lowercasing()
Dim myArr, LR As Long, i As Long
       LR = Range("A" & Rows.Count).End(xlUp).Row
myArr = Range("A1:A" & LR)
       For i = 1 To UBound(myArr)
              myArr(i, 1) = LCase(myArr(i, 1))
       Next i
Range("A1:A" & LR).Value = myArr
Set ExcelSheet = Nothing
End Sub

最佳答案

使用电子表格来完成此操作。我在$A$1:$A$384188中放入了一些数据,并在$B$1:$B$384188中做了一个数组公式:{=UPPER($A $1:$A$384188)}。它是即时的并且不占用太多内存。

通过 VBA 循环总是会慢得多并且占用更多内存。 您可以使用 VBA 创建公式并按值复制粘贴回数据。

关于vba - Excel VBA 中的高效小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934706/

相关文章:

excel - vba 中许多工作簿中的数据 - 限定符无效

c# - 如何使用 EPPlus 填充 ExcelTable

excel - 如何在 vba 代码中执行 "Save As",用日期戳保存当前的 Excel 工作簿?

excel - 为什么不使用自定义函数获取名称的字段重新计算?

Excel公式引用 'CELL TO THE LEFT'

excel - 在Excel中,如何避免重复公式的大部分内容只是为了检查返回值是否为空?

ms-access - 在 Access 的另一个实例中处理 openCurrentDatabase 时出现错误

excel - 从本 map 表应用图表模板,而不是模板文件

c# - 从属 Excel 单元格不会自动更新

VBA:查找红色单元格并复制标题