Excel VBA B列到单个单元格(coma分隔),基于A列
excel中的数据:Excel VBA B列到单个单元格(coma分隔),基于A列,vba,excel,range,Vba,Excel,Range,excel中的数据: 1 Mary 1 John 1 Sam 2 Alaina 2 Edward 我期望的结果是: 1 Mary, John, Sam 2 Alaina, Edward 用户allquixotic回答了一个非常类似的问题。来源 这是他的VBA方法: Option Explicit
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
我期望的结果是:
1 Mary, John, Sam
2 Alaina, Edward
用户allquixotic回答了一个非常类似的问题。来源 这是他的VBA方法:
Option Explicit
Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String
Dim sep As String, retval As String
Dim i As Integer, rownum As Integer
Dim look As Range, j As Range
sep = ", "
retval = ""
For i = 1 To search.Rows.Count
Set look = search.Cells(i, 1)
If absolute Then
rownum = look.Row
Else
rownum = i
End If
If look.Value = param Then
If absolute Then
Set j = values.Worksheet.Cells(rownum, values.Column)
Else
Set j = values.Cells(i, 1)
End If
retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value)
End If
Next
allquixotic = retval
End Function
Use the worksheet function (feel free to rename it) by using a formula like
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
Use the fill handle to put the formula in all the cells
参数如下所示:
=allquixotic(查看单元格、键范围、值范围、绝对值)
look\u cell:
第一个参数应该是单个单元格或值文本。有效输入包括3美元、6.25美元、“Hello”等。这是您试图在key_范围内找到的值
key\u range:
这应该是一个单元格范围(多个单元格);如果absolute
为真,那么您将得到非常奇怪的结果,除非这是一个连续的范围(所有值都在连续行中)
值\u范围:
这应该是一个单元格范围(多个单元格);如果absolute
为真,那么您将得到非常奇怪的结果,除非这是一个连续的范围(所有值都在连续行中)
absolute:
如果为true,则我们将使用键范围中每个“找到”行的绝对行数(相对于整个电子表格中的行数),以确定从值范围
中提取值的行。如果为false,我们将使用相对数;例如,如果我们在键范围
的第三行中找到匹配项,那么我们将从值范围
的第三行中提取值。建议值为FALSE,或者您可以将其忽略,使其默认为FALSE
注意:此函数不支持键和值范围位于列中的情况,但它应该很容易适应这种情况
此外,如果在键\u范围
或值\u范围
中指定多个列,则只会使用最左边的列
再一次,所有的功劳都归于多吉诃德