如何从包装的单元格中获取前两行文本?

时间:2012-03-27 11:50:08

标签: excel vba count line

我需要从Excel中的包装单元格中取出前两行文本。例如,包装的Excel单元格包含如下文本:

wrapedtext1

wrappedtext2

wrappedtext3

wrappedtext4

我只需要前两行作为'wrapedtext1wrappedtext2'。有可能吗?

4 个答案:

答案 0 :(得分:5)

  
    
      

我只需要将前两行作为'wrapedtext1wrappedtext2'。这是可能的???

    
  

是的可能是可能的,但有 NO SIMPLE 方式来实现它。您需要考虑很多因素。

1)以像素为单位的行高

2)字体类型和大小

3)行间距

4)细胞是否合并?

5)单元格是否处于自动调整状态

6)所有文本是否处于正常模式或是否有任何粗体/斜体/下划线字符等等

考虑这个快照

enter image description here

例如,像素中的行高可以从

派生

Debug.Print Range("A1").Height * (24 / 18)

上述情况下的字体大小可以通过此

实现

Debug.Print Range("A1").Font.Size

但挑战是在下面的情景中会发生什么?

enter image description here

在我看来,实现你想要的东西真的太痛苦了。最好的部分是使用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%

<强>快照

enter image description here

HTH

西特

答案 1 :(得分:1)

使用FIND功能:

= LEFT(B2,(FIND(CHAR(10),B2)))

  • FIND搜索换行符(CHAR(10)
  • LEFT为您提供B2中的前X个字符,直至找到换行符的数字

答案 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/