【问题标题】:VBA Excel How to replace a part of a value with another Cells valueVBA Excel如何用另一个单元格值替换一个值的一部分
【发布时间】:2017-04-18 03:10:44
【问题描述】:

我希望有一个单元格,有人可以在其中输入公式,然后使用宏自动将该公式中的单词替换为同一张表中的正确数字。

示例:
工作表包含一个带有权重值的单元格(L8),可以说它的 10 另一个单元格 (L10) 的高度值为 20。

现在,如果有人在单元格(I27) 中键入这样的内容:(Height+120)/Weight 我希望宏用相应的值替换文本,以便我可以将该文本用作公式并在单元格 I28 中显示结果。

所以 cell(I27) 将显示 20+120/10 并且 cell(I28) 将输出该公式的结果。

值在 L8-L14 列中。

我尝试使用我找到的解决方案,如下所示:

With Range("I27")
    .Replace What:="Weight", _
            Replacement:="", _
            LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            MatchCase:=False, _
            SearchFormat:=False, _
            ReplaceFormat:=False
End With

我需要以某种方式告诉它从另一个单元格中获取替换。

我想如果我能让该代码正常工作,我就可以为每个要替换的单词复制它 (4),然后研究一个解决方案,使用公式在旁边的单元格中输出结果.

【问题讨论】:

  • 为什么要替换单词?为什么不给 L8 命名为“重量”,将 L10 命名为“高度”。那么=(Height+120)/Weight的公式是有效的,计算出你想要的答案。
  • 我不确定我是否理解正确。我需要以某种方式告诉 excel,当有人在该单元格中输入这些特定单词时,它们实际上是在另一个地方找到的值。我只是想绕过手动查找和输入这些值,因为公式不会保持不变,你最终不得不经常这样做。此外,这些值正在计算中,因此它们一直在变化。 dot.Py 的解决方案已经帮助了我,我现在可以替换它,我现在要做的就是将那个“转换”的单元格作为公式在另一个单元格中使用。
  • 这是否适用于某种考试情况,您会问诸如“您将如何计算某某”之类的问题,并且该人将他们的“答案”作为“公式”输入,然后您正在运行宏来生成他们的答案的结果?还是您只是试图允许用户在他们的公式中使用名称“体重”和“身高”(等)而不是“L8”和“L10”(等),以便他们的公式更“有意义”?如果是后者,只需命名单元格。 (即使是前者,您也可以命名单元格,然后将 I28 计算为Range("I28").Formula = "=" & Range("I27").Text
  • @YowE3K 的意思是使用Excel Named Ranges。事实上,您正在寻找的正是命名范围的用途。
  • @A.S.H - 很高兴你来这里为我翻译! :)(我最大的问题是试图让人们理解我在说什么 :(这就是我喜欢计算机的原因——他们知道我的意思。)

标签: vba excel


【解决方案1】:

要使用命名范围,

1- Select the menu Formulas --> Name Manager
2- New...--> Name: Weight, RefertTo: =Sheet1!$L$8 -->OK
3- New...--> Name: Height, RefertTo: =Sheet1!$L$10 -->OK

现在您的单元格L8 具有名称“重量”,而您的单元格L10 具有名称“高度”。您可以在任何单元格中输入此公式:

 =(Height+120)/Weight

你得到(L10+120)/L8的结果值。

附言在第 2 步和第 3 步中,您可以将光标放在 RefersTo 框中,然后单击获得名称的相应单元格,从而更轻松地完成此操作。

【讨论】:

  • 一个小的后续问题,@YowE3K 发布了这个 'Range("I28").Formula = "=" & Range("I27").Text' 是否可以挤压圆形方法喜欢吗?
  • 您的意思是您不希望用户输入公式的"=" 部分?
  • 是的,虽然看起来很傻。一切正常,只是试图对结果进行四舍五入,我就准备好了。
  • A.S.H - 您也可以通过在单元格中并直接在公式区域左侧的区域中键入名称来设置范围名称。无需进入名称管理器。 @ManWithManyCheeses - 如果您希望用户键入不带 = 的公式,然后使用宏计算公式,您可以使用 Range("I28").Formula = "=ROUND(" & Range("I27").Text & ", 0)"Range("I28").Value = Evaluate("ROUND(" & Range("I27").Text & ", 0)")
  • @YowE3K 大声笑我曾经使用隐藏的公式栏,以在屏幕上赢得一些空间。我想很多人都这样做:D
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2013-10-28
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多