我有一个电子表格,其中项目描述是一个可变长度但总是以“硬回车”结束以强制单元格中的包裹线。我需要将单元格的第一行复制到另一个单元格中。
我可以使用INSTR查找硬回车的第一个实例(不可见字符),然后复制前N-1个字符吗?
Dell PowerEdge R720XD(< - 这里很难回归) 底盘(最大......
OR 戴尔OptiPlex 7010 Minitower(< - 这里很难回归) 英特尔核心.............
在所有情况下,无论长度如何,我都需要复制单元格中文本的第一行。
我有什么想法可以做到这一点??
由于
基思
答案 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,“”)
即使字符串包含多个线制动器也很有用。