【问题标题】:replace 2 or 3 words in one sentence in one cell from another words in another cell on Excel用 Excel 上另一个单元格中的另一个单词替换一个单元格中一个句子中的 2 或 3 个单词
【发布时间】:2020-06-25 04:17:42
【问题描述】:

我正在寻找解决方案,我在这里找到了它

replacing many words every one with alternative word

但现在我使用的是从该帖子下方的链接中获得的替代代码,它区分大小写。

Function SubstituteMultipleCS(text As String, old_text As Range, new_text As Range)
Dim i As Single
For i = 1 To old_text.Cells.Count
    Result = Replace(text, old_text.Cells(i), new_text.Cells(i))
    text = Result
Next i
SubstituteMultipleCS = Result
End Function

我用它来制作德语 Anki 卡片,所以我需要用 ___ 替换一些单词。如果它们在一起,它可以处理一个单词或一堆单词,但是......

问题如下: 有些动词变位有一个句子结构,当我必须把主要动词放在名词之后,把属于动词的助词放在最后。像这样的

如图所示,动词“schaute an”并没有被新词代替,因为“schaute”在原句中与“an”是分开的。

有没有办法解决这个问题?

谢谢。

【问题讨论】:

  • 您可以通过使用空格作为分隔符拆分成单词来循环替换要替换的单词,
  • 结果应该是什么?
  • Der Glatzkopf __ den Zöllner finster __
  • 可以分别搜索每个单词吗? Anki卡片通常只有一句话,
  • 我没有正确复制整个代码,现在它在那里。

标签: excel vba excel-formula


【解决方案1】:

这是您可以使用的公式(适用于您当前的示例数据:

C2中的公式:

=IFERROR(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(" "&SUBSTITUTE(B2,"."," ")&" "," "&FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[position() = 1]")&" ",D2,1),IFERROR(" "&FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[position() = 2]")&" ",""),D2,1),IFERROR(" "&FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[position() = 3]")&" ",""),D2,1))&".","")

嵌套替换的优点是,如果您有一个可能出现多个的句子,我们可以告诉函数仅替换第一次出现。不知道它是否防水。

【讨论】:

  • 谢谢,你是我的英雄!
  • 完成了。抱歉,这是我的第一篇文章,我看到了拍手和顶部箭头,但没有看到支票哈哈
  • 一切都好@Reycobos。我希望答案对你有所帮助。祝你好运。
  • 我使用这个公式已经有几天了,但我发现了一些我不知道如何改变的东西。逗号有问题,公式不适用于它们。我的示例末尾有一个点,这并不常见(大约 15%),但当单词以逗号结尾时更常见。我一直在玩这个公式几个小时,我可以用逗号代替点,但是这个公式会删除所有的逗号,只保留一个。当然,我无法理解它是如何同时使用逗号和点...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多