gpt4 book ai didi

excel - 基于现有 VBA 函数将数据验证应用于多个单元格

转载 作者:行者123 更新时间:2023-12-03 00:32:02 31 4
gpt4 key购买 nike

我不知道如何仅使用公式在循环中运行字符串。

这是我试图转换为公式的 vba 代码。我想使用这个公式来验证各种单元格的数据。

公式:

Function Test(pValue) As Boolean
If Len(pValue) < 2 Or Len(pValue) > 99 Then
AlphaNumeric = False
Exit Function
End If
LPos = 1
LValid_Values = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789"
While LPos <= Len(pValue)
LChar = Mid(pValue, LPos, 1)
If InStr(LValid_Values, LChar) = 0 Then
Test = False
Exit Function
End If
LPos = LPos + 1
Wend
Test = True
End Function

我编写的公式的简单部分:

=IF(AND(LEN(E4)>1,LEN(E4)<100,____Formula_Here____),TRUE,FALSE)

我假设如果我选择 E4:E50000 并单击 DataValidation,请从下拉列表中选择 Custom,然后输入上述公式然后它会自动将其应用于 E4、E5、E6.. E50000。如果我错了,请纠正我。

此外,我希望它能够在 Excel 2003 及更高版本上运行。

最佳答案

填空

NOT(ISERROR(SUM(SEARCH(MID(E4,ROW($1:$99),1)," ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789"))))

这是一个数组公式,因此如果在工作表中使用,您可以使用 ctrl-shift-enter 输入它。不过,数据验证的自定义公式(至少在2003年)会自动将其视为数组公式,因此只需正常输入即可。

让我们从内到外分解一下。数组公式内的ROW($1:$99)提供了循环机制。它将导致周围的数组公式在每个 i = 1, 2, ..., 99 处求值,因此 MID 将采用 i依次为E4的第>个字符。 SEARCH 不区分大小写,因此我们可以省略 a..z,因为我们有 A..Z。它返回在 A..Z.0..9 中找到第 i 个字符的位置,否则返回错误。 SUM 聚合这些位置并将传播任何错误。因此,如果未找到任何字符,则整个 SUM 将出错。

请注意,据我所知,您可以在自定义验证公式中使用 UDF,因此我不确定我是否遵循您的反对意见。

关于excel - 基于现有 VBA 函数将数据验证应用于多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641831/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com