Excel INSTR在单元格中查找硬回车

时间:2013-02-25 19:47:05

标签: excel vba

我有一个电子表格,其中项目描述是一个可变长度但总是以“硬回车”结束以强制单元格中的包裹线。我需要将单元格的第一行复制到另一个单元格中。

我可以使用INSTR查找硬回车的第一个实例(不可见字符),然后复制前N-1个字符吗?

Dell PowerEdge R720XD(< - 这里很难回归)     底盘(最大......

OR 戴尔OptiPlex 7010 Minitower(< - 这里很难回归)     英特尔核心.............

在所有情况下,无论长度如何,我都需要复制单元格中文本的第一行。

我有什么想法可以做到这一点??

由于

基思

4 个答案:

答案 0 :(得分:6)

是的,你可以轻松地做到这一点

strShort = Left(strLong, InStr(strLong, vbCrLf) - 1)

有些时候(eep。来自Unix系统),你可能不得不用vbCrLf替换vbLf(回车,LineFeed)。

如果您不确定它是否包含Enter,则此代码将执行

strShort = IIf(InStr(strLong, vbCrLf), Left(strLong, InStr(strLong, vbCrLf) - 2), strLong)

答案 1 :(得分:2)

根据换行符的类型,您可以这样做:

InStr(Range("A1").Text, vbLf)
InStr(Range("A1").Text, vbCr)
InStr(Range("A1").Text, vbCrLf)

获取换行符之前的文字:

Left(Range("A1").Text, InStr(Range("A1").Text, vbLf) - 1)

获取换行符后的文字:

Right(Range("A1").Text, InStr(Range("A1").Text, vbLf))

答案 2 :(得分:0)

我无法在下面的Ripster代码中添加评论。我需要50的声誉。我的只有36个,但这实际上应该是此评论而不是单独的答案。

在我看来,Ripster的代码的最后一部分,

Right(Range("A1").Text, InStr(Range("A1").Text, vbLf))

应该是

Right(Range("A1").Text, (Len(Range("A1")-InStr(Range("A1").Text, vbLf)) - 1)

最后不间断地重新生成字符串

strString = Left(Range("A1").Text, InStr(Range("A1").Text, vbLf) - 1) & Right(Range("A1").Text, (Len(Range("A1")-InStr(Range("A1").Text, vbLf)) - 1)

主持人注意事项:请对此进行审查。我仍然认为mysefl是VBA的初学者,我的逻辑可能是错误的。

答案 3 :(得分:-1)

我的解决方法是:

strString = Replace(strString,vbLf,“”)

即使字符串包含多个线制动器也很有用。