【问题标题】:VBA Excel find words in a range and replaceVBA Excel 查找范围内的单词并替换
【发布时间】:2017-11-02 00:30:06
【问题描述】:

我想用另一个词替换列中的词,但是我的代码似乎不起作用,我仍在尝试掌握编码语言,但这对我来说并不直观。

情况:

Global Macro - Equities
Global Macro - Bonds
Global Macro - FX
.
.
.
And so on...

期望的结果:

GM - Equities
GM - Bonds
GM - FX
.
.
.

我的代码

Sub ReplaceFundNames()

    Dim FundName As String
    Dim CorrectedName As String
    Dim ws As Worksheet
    Dim LastRow As Long

    Set ws = ActiveSheet
    LastRow = Range("B" & Rows.Count).End(xlDown).Row

    FundName = Range(LastRow)
    CorrectedName = Replace(FundName, "Global Macro", "GM")

    Range("B" & LastRow).Value = CorrectedName


End Sub

谢谢!

【问题讨论】:

  • 您的代码正在对活动工作表中的单元格 B1048576 执行替换,并且仅当该单元格包含 "Global Macro"

标签: vba excel replace


【解决方案1】:

VBA 中的Replace 函数设计用于处理单个字符串,而Range.Replace 方法设计用于处理Range

因此,您可以在单个语句中执行替换:

ActiveSheet.Range("B:B").Replace "Global Macro", "GM"

【讨论】:

  • 你的意思是用这条语句替换上面的整个代码吗?
  • 是的。您可以将其缩小到使用的行数,但假设没有任何数据低于或高于您需要替换值的范围,那么上面的行就足够了。重要的是你使用Range.Replace 方法而不是VBA.Replace 函数。
  • 啊好的,谢谢你的提示。但是,我已经尝试了代码并且弹出了这个错误消息:“编译错误:预期的函数或变量”
  • 如果您使用Sub ReplaceFundNames() 行和End Sub 行之间的行,我看不出有任何编译错误的方法。您确定您没有打错字,和/或您的代码中的其他地方没有错误吗? ActiveSheet.Range("B:B").Replace "Global Macro", "GM" 工作,除非您没有活动工作表。
  • 好的,我在一个新的电子表格上试了一下,效果很好,非常感谢!
猜你喜欢
  • 2019-01-31
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多