Excel 中用于连接函数的 UDF

An UDF for Concatenate Function in Excel

提问人:Aija 提问时间:11/3/2023 最后编辑:Mayukh BhattacharyaAija 更新时间:11/3/2023 访问量:65

问:

您好,我想知道是否可以使用 VBA/UDF 实现此结果?

The result I want to achieve is under the Result cell

基本上我想做的是能够连接来自不同单元格的各种字符串并获得显示的结果,而无需一遍又一遍地键入连接公式,而只有一个带有 VBA/UDF 的函数,因此我们可以根据所选单元格获得不同类型的结果。

我已经在互联网上通过创建模块来寻找方法,但其中大多数是使用范围。很抱歉,如果这是一个不合适的问题,因为我对 Excel 非常陌生,因此我无法展示我所取得的成就。非常感谢您的帮助!

Excel VBA 串联 用户定义函数

评论

0赞 taller 11/3/2023
请显示有关的详细信息?您在寻找姓氏和年份吗?typing the concatenate formula over and over
0赞 Aija 11/3/2023
根据我的图像,我希望它键入 =C35&C31&C36&D27 而不是在 C40 上键入 =result(C31,D27) 并显示相同的结果,所以我在想如何将“有名字的学生”和“现在在一年”嵌入在工作表上?很抱歉,如果这让你感到困惑,我希望你能理解我想说的话
0赞 user10186832 11/3/2023
stackoverflow.com/questions/32054665/......
0赞 Dominique 11/3/2023
@Aija:只是一个问题:你提到你想连接“C31”和“D27”。为什么?通常,您可能会期望与“名称”相对应的“年份”在同一行中,不是吗?

答:

0赞 taller 11/3/2023 #1

这是一个没有任何参数验证的演示片段。

Option Explicit

Function MyConcat(text1, text2) As String
    Application.Volatile
    MyConcat = Range("C35") & " " & _
        text1 & " " & Range("C36") & " " & text2
End Function

评论

0赞 FunThomas 11/3/2023
@user10186832:默认为“公共”。
1赞 Dominique 11/3/2023 #2

您真的确定您正在寻找用户定义的函数吗?
我的印象是,您正在寻找基于此公式的绝对和相对引用,如以下屏幕截图所示:

=C$35&C27&C$36&D27

Excel screenshot

如您所见,单元格“C35”和“C36”(变为“C$35”和“C$36”)的行号前面有一个美元符号。像这样,当我将公式拖动到下一行时,这些行号不会改变,结果保持不变。

0赞 VBasic2008 11/3/2023 #3

个性化的 concat 功能

M365 LAMBDA 公式

  • 在 M365 中,您可以创建和调整以下 lambda 公式:

    =LAMBDA(student,year,"The student named "&student&" is now on year "&year&".")
    
    • 然后,使用名称管理器,您可以创建一个名称,例如 ,并在文本框中输入公式。StudYRefers to
    • 现在,您可以简单地使用 .=StudY(C31,D27)

VBA的

  • 在 VBA 中,可以从如下所示的内容开始。
Function StudentYear(ByVal Student As String, ByVal Year As Long) As String
    StudentYear = "The student named " & Student _
        & " is now on year " & Year & "."
End Function
Function StudentYear2(ByVal Student As String, ByVal Year As Long) As String
    Const BEFORE As String = "The student named "
    Const BETWEEN As String = " is now on year "
    Const AFTER As String = "."
    StudentYear2 = BEFORE & Student & BETWEEN & Year & AFTER
End Function