如何使用公式将文本附加到Excel中的整数?

我试图“翻译”包含数字的文本string的语法(最终目的是翻译两个医疗数据库的search条件,但这并不重要)。

我想要的是一个细胞的内容在另一个细胞中被改变。 例如:

1或2或3或4

变为:

#1或#2或#3或#4

我可以自己使用一个号码

=IF(ISNUMBER($D$37),"#"&$D$37,"") 

…这意味着1成为#1,但我不能解决如何做到这一点的多个数字。

您提供了一个样本,以便将1或2或3或4转换为#1或#2或#3或#4的使用,

 ="#"&SUBSTITUTE(A2, " or ", " or #") 

如果您有Office 365 Excel,则使用此数组公式:

 =TRIM(CONCAT(IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),999*( ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)+1,999))),"#" & TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),999*( ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)+1,999))&" ",TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),999*( ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)+1,999))&" "))) 

作为一个数组公式,在退出编辑模式时,必须使用Ctrl-Shift-Enter而不是Enter来确认。 如果正确完成,则Excel将在公式周围放置{}

![在这里输入图片描述

如果您没有Office 365 Excel,则需要vba执行公式。

公式通过字母逐字符遍历,并在遇到一个数字时重新添加#

VBA解决scheme,以防万一。

 Public Function Hashize(S As String) As String Dim Words() As String Dim I As Integer Words() = Split(S) For I = LBound(Words) To UBound(Words) If IsNumeric(Words(I)) Then Words(I) = "#" & Words(I) End If Next Hashize = Join(Words, " ") End Function