![](/img/trans.png)
[英]Excel: get cell collection of cells that contain certain text or formula
[英]Excel: How to combine cells that contain certain text?
我有一个 Excel 电子表格,A 列中有一个人的名字,B 到 DN 列中有一个在线聊天对话框,如下所示:
A B C D
Name Transcript 1 Transcript 2 Transcript 3 ........
John Visitor: line 1. John: line 2. Visitor: line 3.
Sally Sally: line 4. Sally: line 5. Visitor: line 6.
以此类推几千行。 我的目标是将每一行中包含“访客:”的单元格合并到一个单元格中,并在另一个单元格中合并列 A 中包含名称的单元格。所以我想在末尾添加两个新列,如下所示:
DR DS
Visitor: line 1. John: line 2.
Visitor: line 3.
Visitor: line 6. Sally: line 4.
Sally: line 5.
我试过使用TEXTJOIN
function 像这样: =TEXTJOIN(CHAR(10),TRUE,IF(ISNUMBER(FIND("Visitor:",B2:DN2)),B2:DN2,""))
和=TEXTJOIN(CHAR(10),TRUE,IF(ISNUMBER(FIND(A2&":",B2:DN2)),B2:DN2,""))
。 但我发现这只适用于某些行,并为其他行返回值错误。 我无法弄清楚有效的行和无效的行之间有什么区别。 我认为 isnumber(find(...)) 工作正常,但它被 if 语句赶上了,我不确定问题是什么。 非常感谢任何见解!
我想到了。 评论中的 Scott Craner 的想法是正确的,只是行对于TEXTJOIN
函数来说不是太长,而是字符串对于IF
函数来说太长了。 因此,我使用LEFT
和MID
函数拆分字符串,如下所示:
=TEXTJOIN(CHAR(10),TRUE,IF(ISNUMBER(FIND("Visitor:",A2:DN2)),LEFT(A2:DN2,255),"")&IF(ISNUMBER(FIND("Visitor:",A2:DN2)),MID(A2:DN2,256,255),"")&IF(ISNUMBER(FIND("Visitor:",A2:DN2)),MID(A2:DN2,511,255),""))
和
=TEXTJOIN(CHAR(10),TRUE,IF(ISNUMBER(FIND(A2&":",A2:DN2)),LEFT(A2:DN2,255),"")&IF(ISNUMBER(FIND(A2&":",A2:DN2)),MID(A2:DN2,256,255),"")&IF(ISNUMBER(FIND(A2&":",A2:DN2)),MID(A2:DN2,511,255),""))
这给了我正在寻找的确切结果。 如果字符串长度超过 765 个字符,则必须对其进行编辑,但现在它适合我的目的。
我确信它可以用 excel 公式来完成。 但是我无法使用内置命令来做到这一点。 我从互联网上找到了一个代码并将其更改如下。 它解决了我的问题。
Function combinebytext(CriteriaRng As Range, Criteria As Variant, _
ConcatenateRng As Range, Optional Delimeter As String = " , ") As Variant
Dim i As Long
Dim strResult As String
Dim n As Long
On Error GoTo ErrHandler
If CriteriaRng.Count <> ConcatenateRng.Count Then
Combinerows = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To CriteriaRng.Count
n = InStr(CriteriaRng.Cells(i).Value, Criteria)
If n > 0 Then
strResult = strResult & Delimeter & ConcatenateRng.Cells(i).Value
End If
Next i
If strResult <> "" Then
strResult = Mid(strResult, Len(Delimeter) + 1)
End If
combinebytext = strResult
Exit Function
ErrHandler: combinebytext = CVErr(xlErrValue) End Function在此处输入图像描述
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.