我需要从Excel中的包装单元格中取出前两行文本。例如,包装的Excel单元格包含如下文本:
wrapedtext1
wrappedtext2
wrappedtext3
wrappedtext4
我只需要前两行作为'wrapedtext1wrappedtext2'。有可能吗?
答案 0 :(得分:5)
我只需要将前两行作为'wrapedtext1wrappedtext2'。这是可能的???
是的可能是可能的,但有 NO SIMPLE 方式来实现它。您需要考虑很多因素。
1)以像素为单位的行高
2)字体类型和大小
3)行间距
4)细胞是否合并?
5)单元格是否处于自动调整状态
6)所有文本是否处于正常模式或是否有任何粗体/斜体/下划线字符等等
考虑这个快照
例如,像素中的行高可以从
派生 Debug.Print Range("A1").Height * (24 / 18)
上述情况下的字体大小可以通过此
实现 Debug.Print Range("A1").Font.Size
但挑战是在下面的情景中会发生什么?
在我看来,实现你想要的东西真的太痛苦了。最好的部分是使用ALT + Enter
插入换行符然后检索文本。
<强>后续强>
通过vba代码将字符串输入到包装的单元格中。那么如何通过按alt + enter来插入数据呢? - 1355 4小时前
在这种情况下,您也可以采取类似的方法。
Sub Sample()
Dim strg As String
strg = "This is a sample" & vbCrLf & _
"sentence which is" & vbCrLf & _
"in Cell A1 and the" & vbCrLf & _
"text is separated" & vbCrLf & _
"with line breaks"
With Range("A1")
.Columns(1).ColumnWidth = 16.86
.Font.Name = "Calibri"
.Font.Size = 11
.Value = strg
End With
End Sub
注意:对于上述,您必须录制宏,并查看可以采用特定格式的字体,字体大小和列宽。同样,您将不得不考虑以下事实:我上面给出的示例是针对新工作表中的非格式化单元格。如果要写入合并的单元格或每个格式化的单元格,则必须相应地更改上述代码,这可以通过录制宏来轻松实现。 我还假设ZOOM级别设置为100%
<强>快照强>
HTH
西特
答案 1 :(得分:1)
使用FIND功能:
= LEFT(B2,(FIND(CHAR(10),B2)))
答案 2 :(得分:0)
您好,有两种方法可以使用VBA代码。
第一种方式。如果线条用空格分隔
Dim avarSplit As Variant
'If separated with a space
avarSplit = Split(Worksheets(2).Range("A7").Value, " ")
第二种方式,如果他们分开休息。
Dim avarSplit2 As Variant
'separated with a break
avarSplit2 = Split(Worksheets(2).Range("A8").Value, Chr(10))
然后你得到一个数组,其中所有的行都是分开的,你可以把它们读出来......
Moosli
答案 3 :(得分:0)
您可以在Excel中执行一些复杂的公式,以实现此目的而无需VBA代码。
假设多行文字在A1中。如果你只想要前两行,你可以这样做:
获取第一行:
=MID(A1,1,IF(2=LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1,LEN(A1),SEARCH("@",SUBSTITUTE(A1,CHAR(10),"@",2))))
获取第二行:
=MID(A1,SEARCH("@",SUBSTITUTE(A1,CHAR(10),"@",1))+1,IF(2=LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1,LEN(A1),SEARCH("@",SUBSTITUTE(A1,CHAR(10),"@",2)))-SEARCH("@",SUBSTITUTE(A1,CHAR(10),"@",1)))
然后只需使用CONCATENATE()
将这两者结合起来。
查看此网站,您可以指定要获取的行: http://www.excelblog.ca/separating-lines-from-multi-line-excel-cell/