观看记录
  • 我的观影记录
登录
测试首页Excel数组首行按每行数据降序排列自定义函数

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

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

0Excel文本索引自界说函数

工具/原料

  • Microsoft Office Excel 2007
  • Excel VBA

一、函数HDOCONCATENATE

  1. 1

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

  2. 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. 1

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

  2. 2

    然后按下快捷键ALT+F11打开VBA(宏)编纂界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。

  3. 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

            End If

            If Err.Number <> 0 Then

                HDOCONCATENATE ="#VALUE!"

                Exit Function

            End If

            Err.Clear

        End 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)

                    For j = 1 To UBound(mc1)

                        If mmk(i - 1) = CStr(mcn(j)) Then

                            If .Exists(j) = False Then

                                .Add j, i

                                HDOCONCATENATE = HDOCONCATENATE & CStr(mc1(j))

                                Exit For

                            End If

                        End If

                    Next j

                Next i

            End With

        End If

    End Function

    Function SZSX(m As Variant)

        '2020-7-8 22:50:12

        Dim sz As Object, t As Variant

        Set sz = CreateObject("MSScriptControl.ScriptControl")

        sz.Language ="javascript"

        t = Join(m,",")

        sz.addcode"function aa(bb){sz=bb.split(',');sz.sort(function(a,b){return a-b;});sz.reverse();return sz;}"

        SZSX = sz.eval("aa('" & t &"')")

    End Function

  4. 4

    以上操作动态过程如下:

三、函数HDOCONCATENATE利用

  1. 1

    经由过程实例填写公式如下:

    公式                                                           申明(成果)

    =HDOCONCATENATE($A$1:$J$10,2)           5682014937

    =HDOCONCATENATE($A$1:$J$10,M2)        M2为2,5682014937

    =HDOCONCATENATE({1,2,3;2,4,5},2)            321

    =HDOCONCATENATE({1,2,3;2,4,5},M2)        M2为2, 321

  2. 2

    若是需升序利用上回分享的《Excel如何从数据集选r个数据摆列组合列表(一)》的SZSX代码。

    2Excel如何从数据集选r个数据摆列组合列表(一)

  3. 3

    若是感觉这篇经验帮到了您,请点击下方的 “投票点赞" 或者“保藏”撑持我!还有疑问的话可以点击下方的 “我有疑问”,感谢啦!

注重事项

  • 动态图片要双击当作零丁大图才能播放全过程。

“Excel数组首行按每行数据降序排列自定义函数”关联的文章

切换深色外观
留言
视频编辑修改
回到顶部
首页
手机数码
医疗健康
金融管理
社交情感
无名