Excel数组首行按每行数据降序排列自定义函数

修法布施得聪明智慧 , 多分享让生活更美好 。 上回分享了《Excel文本索引自定义函数》 , TEXTSY可以把单元格区域值连接起来 。 如果数组首行按每行数据降序排列连接起来 , 如下图 , 将怎样编写自定义函数?0Excel文本索引自界说函数

Excel数组首行按每行数据降序排列自定义函数

文章插图
Excel数组首行按每行数据降序排列自定义函数

文章插图

需要这些哦
Microsoft Office Excel 2007
Excel VBA
一、函数HDOCONCATENATE1功能:在表格或数值数组 (数组:用于成立可生当作多个成果或可对在行和列中摆列的一组参数进交运算的单个公式 。 数组区域共用一个公式;数组常量是用作参数的一组常量 。 )的首行 , 并在表格或数组中指定行的值降序返回顾行所稀有据对应摆列构成文本串 。

2语法:
HDOCONCATENATE(table_array,Row_index_num)
Table_array   为需要在此中查找数据的数据表 。 利用对区域或区域名称的引用 。
· Table_array 的第一行的数值可觉得文本、数字或逻辑值 。
· Table_array 的第二行起的数值为数字 。
Row_index_num   为 table_array 中待返回的匹配值的行序号 。 Row_index_num为 1 时 , 返回 table_array 第一行的数值 , row_index_num 为 2 时 , 返回 table_array 第二行的数值 , 以此类推 。

二、函数HDOCONCATENATE编制1起首打开Microsoft Office Excel 2007 , 新建文档并保留文件名《Excel数组首行按每行数据降序摆列自界说函数 .xlsm》(演示文件 , 下面代码复制到能运行宏的工作簿都可以)如图 。
Excel数组首行按每行数据降序排列自定义函数

文章插图

2然后按下快捷键ALT+F11打开VBA(宏)编纂界面 , 然后点菜单栏【插入】下拉中列表中点【模块(M)】如图 。
Excel数组首行按每行数据降序排列自定义函数

文章插图

3然后插入了一个模块1 , 在代码框中复制如下代码:
Option Base 1
Function HDOCONCATENATE(mm, n As Long) As String
    '2020-8-8 22:48:26
    Dim i As Long, j As Long
    Dim mb, mc1, mcn, mmk
    If IsArray(mm) Then
        mb = mm
    Else
        On Error Resume Next
        If mm.Rows.Count > 1 And mm.Columns.Count > 1 Then
            mb = mm
        Else
            HDOCONCATENATE = "#VALUE!"
            Exit Function
        If
        If Err.Number <> 0 Then
            HDOCONCATENATE = "#VALUE!"
            Exit Function
        If
        Err.Clear
    If
    If n < 1 Or n > UBound(mb, 1) Then
        HDOCONCATENATE = "#VALUE!"
    Else
        mc1 = Application.Index(mb, 1, 0)
        mcn = Application.Index(mb, n, 0)
        Erase mb
        mmk = Split(SZSX(mcn), ",")
        With CreateObject("scripting.dictionary")
            For i = 1 To UBound(mc1)

推荐阅读