使用VBA在Excel电子表格中设置数据格式

皮特

我有一个电子表格,每周用于将数据导入数据库。

数据必须经过格式化才能正确导入。

我想使用VBA格式化数据,而不是手动处理。

重新打开XL工作簿时,此代码将数据更改为特定名称:

Option Explicit

Private Sub Workbook_Open()

'course name changes
Columns("G:G").Select
    Selection.Replace What:="Course Name", replacement:="New Course Name", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _ False, ReplaceFormat:=False

我为每个新名称重复此代码。有没有一种使用更少文本的简洁方法?可能的一种方法是,我可以将数组中的所有课程名称作为键值对列出,这样可以更轻松地进行维护。谢谢

火腿骨

我认为与其使用查找/替换字符串列表,不如使用字典结构并一次遍历范围(G列)中的每个单元格并评估该短语是否在字典中,会更好

在短语列表中的列上进行查找/替换将非常昂贵,因为每次搜索都将遍历该范围内的每个值。如果您有1000个词组替换和1,000,000行,那么您最好去一个三明治,因为这将需要一段时间。

使用集合在范围内循环比较好,但仍然不如字典。字典搜索为O(1),而标准搜索/列表搜索可以为O(n)。这对于不匹配项非常重要,在这种情况下,采用收集方法可以让您先遍历集合中的每个项目,然后再发现不存在匹配项-字典会立即知道是否存在匹配项,如果匹配,它是什么。

这是一个如何在G列上工作的示例:

Sub ReplacePhrases()

  Dim dict As New Dictionary
  Dim row, lastRow As Long
  Dim replace As String

  dict.Add "Course Name", "New Course Name"
  dict.Add "VBA, 2nd Edition", "VBA 3rd Edition"

  lastRow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count

  For row = 1 To lastRow
    replace = dict(Cells(row, 7).Value2)
    If replace <> "" Then
      Cells(row, 7).Value2 = replace
    End If
  Next row

End Sub

dict.Add可以通过遍历另一个工作表中的单元格列表,文件中的行,数据库中的行或其他您认为合适行来替换这些行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用VBA脚本将数据从.txt转换为Excel电子表格

电子表格中的VBA UserForm标签

使用VBA将数据从Excel消息框中提取到电子表格中(从Zillow中提取数据)

基于Excel电子表格中输入的订单

使用EPPlus验证Excel(电子表格)文件

使用Perl在电子表格中读取时间格式数据

图像到R中的Excel电子表格

使用axios和Vue.js以JSON格式获取电子表格数据

如何从excel中的Excel电子表格中提取数据到字典列表中?

电子表格的Excel方程

如何使用数组格式化电子表格数据中的电子邮件?

在Excel中为电子表格编写宏

打开电子表格时,如何使Excel自动从数据库中获取数据?

PHPExcel为电子表格中的所有工作表设置边框和格式

使用Freezepane生成Excel电子表格

在VBA中的Access 2007中编辑Excel电子表格后,如何保存

从Excel电子表格读取错误到VBA

Excel VBA:重置电子表格计数

设置Excel电子表格的“标题”属性

将数据导入Excel电子表格时控制格式

在Excel电子表格中存储结果网格

Excel电子表格数据转换

使用Google Apps脚本设置电子表格单元格格式

根据行数据Excel VBA将数据行排序到不同的电子表格中

从Excel电子表格中读取,并使用XLSX中的数据重命名多个文件夹

如何使用VBA在Excel电子表格中的列表中打开文件夹

如何使用php Excel在excel电子表格中插入数据

删除 Excel 电子表格中的重复项

读取 Excel 电子表格并格式化单元格中的文本