繁体   English   中英

Excel VBA自定义分数公式

Excel VBA Custom Score formula

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

美好的一天,我试图在excel中创建一个函数,该函数根据其他4个数字对一个数字进行评分,我正在为预算制定一个计分卡,因此我尝试实现以下目标:

我有一个包含以下表格的电子表格 在此处输入图片说明

现在我有4列(“ K”到“ N”)“隐藏”,其中包含值157、143、128、114。 我想创建一个公式,将A5中的值与其他四列进行比较,然后将结果放入J列中。例如,我将以下公式放入J5中

单元格J5 =得分(A5,K5,L5,M5,N5)

为了获得评分,我创建了以下VBA代码:

Public Function Score(A As Integer, S1 As Integer, S2 As Integer, S3 As Integer, S4 As Integer) As String

    If A < S1 Then
        Score = "1"
    ElseIf S1 + 1 <= A < S2 Then
        Score = "2"
    ElseIf S2 + 1 <= A < S3 Then
        Score = "3"
    ElseIf S3 + 1 <= A < S4 Then
        Score = "4"
    ElseIf S4 + 1 <= A Then
        Score = "5"
    End If

End Function

谁能告诉我我要去哪里错了? 使用公式时,出现#NUM错误

3 个回复

如果这是您的第一项尝试,请尝试一下。 您必须指定函数的返回值As String作为第一行的结尾。

Public Function Score() As String

    Dim iRow As Integer

    iRow = Application.Caller.Row
    A = Range("$A$5")
    S1 = Range("$K" & iRow)
    S2 = Range("$L" & iRow)
    S3 = Range("$M" & iRow)
    S4 = Range("$N" & iRow)

    If A < S1 Then
        Score = "1"
    ElseIf S1 + 1 <= A < S2 Then
        Score = "2"
    ElseIf S2 + 1 <= A < S3 Then
        Score = "3"
    ElseIf S3 + 1 <= A < S4 Then
        Score = "4"
    ElseIf S4 + 1 <= A Then
        Score = "5"
    End If

End Function

如果您想自己选择功能的五个单元格,例如=score(A5,F10, G10, H10, E10)

Public Function Score(A As Integer, S1 As Integer, S2 As Integer, S3 As Integer, S4 As Integer) As String

    If A < S1 Then
        Score = "1"
    ElseIf S1 + 1 <= A < S2 Then
        Score = "2"
    ElseIf S2 + 1 <= A < S3 Then
        Score = "3"
    ElseIf S3 + 1 <= A < S4 Then
        Score = "4"
    ElseIf S4 + 1 <= A Then
        Score = "5"
    End If

End Function

我终于弄明白了。 首先,我忘记了我正在使用数以百万计的数字,因此Integer不能正常工作,我不得不使用long ,但我得到了一个结果,但没有正确的结果,因此我决定尝试规定两者之间的范围。 这是我的结果:函数规定A越低,评级越高

Public Function ScoreDown(A As Long, S1 As Long, S2 As Long, S3 As Long, S4 As Long) As String

 If A > S1 Then
        Score = "1"
    ElseIf S1 >= A And A > S2 Then
            Score = "2"
    ElseIf S21 >= A And A > S3 Then
        Score = "3"
    ElseIf S3 >= A And A > S4 Then
        Score = "4"
    ElseIf S4 >= A Then
        Score = "5"
    End If


End Function

最简单的解决方案-我认为并且如果不使用VBA的解决方案还可以-将在K列之前再插入一个隐藏列,然后输入任何非常大的数字(只需确保A列中的值始终小于该值即可)值)。

然后在J3中输入以下公式:

=MATCH(A3,K3:O3,-1)
1 VBA中的npoi SetCellFormula自定义公式

我有一个用Excel模板填充数据的应用程序。模板是.xlsm。在模板中,当我尝试将单元格公式设置为此函数时,我创建了一个名为SumByColor的vba函数,但出现此错误: 我这样设置公式: ...

2 在Excel中编写公式时如何防止自定义VBA函数的建议?

我正在编写一系列VBA函数/ subs,可以在许多项目中重用。 我遇到的问题是,在使用工作表时,这些功能列在建议的公式函数中。 将函数设置为私有将阻止这一点,但它还将做的是删除显示函数参数的方便提示,这些函数是从存储函数的模块以外的模块调用的。 有没有人知道一种方法来阻 ...

3 Excel自定义格式和/或公式

我有一个客户的数字列表,如下所示: 根据客户端,前两个数字显示正确的格式。 是否有一个公式和/或自定义格式,我可以用来使所有数字统一正确的格式? 注 - 所有数字均为10位数,其后为第4位和第6位。 ...

4 Excel自定义数据验证公式

我有一个Excel文件,如果条件不符合条件,我会尝试添加验证以停止用户,但是以下是我的公式,但未返回预期结果: 这是我要完成的工作: ...

2017-11-09 22:03:28 1 26   excel
5 自定义 Excel 公式出错

我有一个文件,其中有“创建日期”和“请求类型”以及“截止日期”列。 在“截止日期”一栏中我做了这个公式 该公式将添加 34 天,然后在单元格 c 中打印结果,但是当我将“=”放在“IF”之前时,我收到以下错误消息: 你为这个函数输入了这么多参数 ...

6 Excel自定义验证公式

我已经弄清楚了如何单独执行此操作,但是在组合自定义公式时需要帮助。 我想要一个公式,要求该人员输入以下数据:*必须为数字(ISNUMBERS); *要求输入八个字符的手动数据; *可以以零开头,如果是,则应显示零 ...

7 可以通过公式定义自定义格式(不使用VBA)

我需要一种自定义格式,该格式将显示给定的小数位数。 小数位数由一个单元格的值定义。 可以不使用VBA来完成吗? 我创建了一个描述所需格式的自定义格式的公式,该格式具有所需的小数位数(即单元格B1 =“####”&“,”&SUBSTITUTE(10 ^ A1;“ 1”;“”)中需要A1的 ...

2019-02-06 16:21:16 1 14   excel
8 在excel中的一个单元格中组合列表和自定义公式数据验证,而无需vba

任何人都可以帮助在不使用vb​​a的情况下在单个单元格中组合列表和自定义公式数据验证的方法吗? 我有一个自定义公式,如果逻辑为TRUE,则验证数据,但我希望用户也有能力从下拉列表中进行选择。 任何帮助将不胜感激。 谢谢。 对不起,如果问题不够清楚。 请看下面: 在此示例 ...

9 如何使用VBA编写的自定义公式从Excel单元格中选择特定的字符串片段

在工作中,我需要每周从Salesforce实例中的记录重新格式化不正确的地址。 我们使用报告收集格式错误的地址,并将其导出到Excel文件。 我的工作仅仅是操纵文件中的数据以正确格式化它们,然后将它们重新插入数据库。 通常,地址的格式如下: 芝麻街5号,任何地方,任何地方 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM