Excel表二日期列A列对应的B列等于表一日期列C列中同一日期对应的D列的值?

表一C列为项目日期列(乱序的日期),D列为项目编号;表二A列为日期列(升序的日期),B列为项目号;如何让表二B列等于与表二A列同一日期的表一C列对应的D列的项目编号???... 表一C列为项目日期列(乱序的日期),D列为项目编号;表二A列为日期列(升序的日期),B列为项目号;如何让 表二B列 等于 与表二A列同一日期的表一C列对应的D列的项目编号 ???表二B2 显示 2020.06.02 这天进行的项目 102和106,表二B3 显示 2020.06.03 这天进行的项目 105。 展开
 我来答
mzz9060
2020-07-15 · TA获得超过1318个赞
知道小有建树答主
回答量:770
采纳率:85%
帮助的人:221万
展开全部

1、如果你的EXCEL支持TEXTJOIN函数,就可以直接用数组公式计算,如图B列

B2公式:=TEXTJOIN("+",TRUE,IF(表一!$A$2:$A$8=A2,表一!$B$2:$B$8,""))

按Ctrl+Shift+Enter组合键输入。

2、如果不支持以上函数,可以编写自定义函数完成,按ALT+F11组合键,打开VB窗口,执行"插入"-"模块",复制下面代码进去,回到工作表,像使用普通公式一样使用它,如C2公式:=JOINIF(表一!$A$2:$A$8,A2,表一!$B$2:$B$8)

代码如下:

Function JOINIF(Rng1 As Range, Str, Rng2 As Range)

    Dim arr, brr

    Dim i As Long

    Dim j As Long

    Dim MyStr As String

    If Rng1.Rows.Count > 65536 Then

        arr = Rng1.Resize(65536, Rng1.Columns)

        brr = Rng2.Resize(65536, Rng1.Columns)

    Else

        arr = Rng1

        brr = Rng2

    End If

    For i = 1 To UBound(arr)

        For j = 1 To UBound(arr, 2)

            If arr(i, j) <> "" Then

                If arr(i, j) = Str Then

                    MyStr = MyStr & brr(i, j) & "+"

                End If

            Else

                Exit For

            End If

        Next j

    Next i

    JOINIF = Left(MyStr, Len(MyStr) - 1)

End Function

追问
谢谢,TEXTJOIN  就行。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式