Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA B列到单个单元格(coma分隔),基于A列_Vba_Excel_Range - Fatal编程技术网

Excel VBA B列到单个单元格(coma分隔),基于A列

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

excel中的数据:

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范围
中指定多个列,则只会使用最左边的列

再一次,所有的功劳都归于多吉诃德