结合VBA和公式检查唯一输出
好的,我有一个公式,它根据名字和姓氏列表生成用户名。现在,当这起作用时,我希望单元格引用我自己的VBA函数。但是,我仍然希望使用原始公式,因为代码要少得多 我有一个公式:结合VBA和公式检查唯一输出,vba,excel,formula,excel-formula,Vba,Excel,Formula,Excel Formula,好的,我有一个公式,它根据名字和姓氏列表生成用户名。现在,当这起作用时,我希望单元格引用我自己的VBA函数。但是,我仍然希望使用原始公式,因为代码要少得多 我有一个公式: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(LEFT(table[[#This Row];[Firstname:]])&table[[#This Row];[Lastname:]]);"æ";"a");"ø";"o");"å";"a") 这基本上会生成用户名。但是,我想通过一个单独
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(LEFT(table[[#This Row];[Firstname:]])&table[[#This Row];[Lastname:]]);"æ";"a");"ø";"o");"å";"a")
这基本上会生成用户名。但是,我想通过一个单独的函数来运行它,以确定用户名是否已经被使用。如果是,它应该生成一个稍微不同的用户名
我是这样想的:
Public Function genUserName(ByVal strFirstName, strLastName As String)
Dim strUsername As String
Set objDomain = GetObject("WinNT://grunnarbeid2.local")
objDomain.Filter = Array("User")
'FormulaR1C1 = "=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(LEFT(tableFaste[[#This Row];[Fornavn:]])&tableFaste[[#This Row];[Etternavn:]]);""æ"";""a"");""ø"";""o"");""å"";""a"")"
'strUsername = ActiveCell.FormulaR1C1
blnFound = False
For Each objUser In objDomain
If objUser.Name = strUsername Then
blnFound = True
Exit For
End If
Next
genUserName = strUsername
End Function
那么,我该如何组合这些功能呢?我建议将
GenuerName
的功能限制为仅检查唯一性,并将现有公式的结果传递给它:
Public Function genUserName(ByVal strUsername As String)
Set objDomain = GetObject("WinNT://grunnarbeid2.local")
objDomain.Filter = Array("User")
blnFound = False
For Each objUser In objDomain
If objUser.Name = strUsername Then
blnFound = True
Exit For
End If
Next
genUserName = strUsername
End Function
然后从一个像
=genUserName(SUBSTITUTE( ... ))
这很好用,我会为你修好我的“逻辑”而称赞你。我只是想得不对:)