Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中的Excel公式_Excel_Vba_Excel Formula - Fatal编程技术网

VBA中的Excel公式

VBA中的Excel公式,excel,vba,excel-formula,Excel,Vba,Excel Formula,我试图弄明白,为什么函数式在excel中工作,而不能简单地添加到VBA中 Sub btn_Get_Type_Click() Dim lr As Long With ThisWorkbook.Worksheets("Sheet1") lr = .Cells(Rows.Count, 1).End(xlUp).Row .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(CORPORAT!A

我试图弄明白,为什么函数式在excel中工作,而不能简单地添加到VBA中

Sub btn_Get_Type_Click()

    Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")
        lr = .Cells(Rows.Count, 1).End(xlUp).Row
        .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(CORPORAT!A1:E30,5)),'CORPORATE','FIRM'),'HUMAN')"

    End With
End Sub

有什么想法吗?还是我完全走错了路?

我想你对引号有问题。试试这个:

Sub btn_Get_Type_Click()

    Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("E2:E" & lr) = .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(corporat!A1:E30,5)),""CORPORATE"",""FIRM""),""HUMAN"")"


    End With
End Sub

我想你对报价有问题。试试这个:

Sub btn_Get_Type_Click()

    Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("E2:E" & lr) = .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(corporat!A1:E30,5)),""CORPORATE"",""FIRM""),""HUMAN"")"


    End With
End Sub

您想创建什么公式


现在的答案是,您的匹配函数将无法工作,因为您没有提供搜索条件,而且5也不是有效的选择-小于1、精确0或大于1。

要创建什么公式


现在的答案是,您的匹配函数将无法工作,因为您没有提供搜索条件,而且5也不是有效的选择-小于1、精确0或大于1。

我找到了解决方案,非常感谢您的建议。第一个是错误的。Rows.Count没有点,下一个匹配没有条件,@JvdV tip和最后一个类型不匹配,以及;我只需要一种类型的任务

该公式适用于:

    Sub btn_Get_Type_Click()

    Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(D2,CORPORAT!$E$1:$E$30,0)),""K"",""PO""),""FO"")"


    End With
End Sub

我找到了解决办法,非常感谢你的建议。第一个是错误的。Rows.Count没有点,下一个匹配没有条件,@JvdV tip和最后一个类型不匹配,以及;我只需要一种类型的任务

该公式适用于:

    Sub btn_Get_Type_Click()

    Dim lr As Long

    With ThisWorkbook.Worksheets("Sheet1")
        lr = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("E2:E" & lr) = "=IF(D2>0,IF(ISNUMBER(MATCH(D2,CORPORAT!$E$1:$E$30,0)),""K"",""PO""),""FO"")"


    End With
End Sub
请注意,Rows.Count必须是.Rows.Count,开头带点。否则,此代码可能会失败。请注意,Rows.Count必须是.Rows.Count,开头带点。否则这个代码可能会失败。我也认为MATCHcorporat!A1:E30,5是错误的,因为它是匹配搜索条件、搜索矩阵、比较类型,所以它可能是匹配5的另一种方式,下士!A1:E30和OP应该选择一个比较类型并添加它。我也认为MATCHcorporat!A1:E30,5是错误的,因为它是匹配搜索条件、搜索矩阵、比较类型,所以它可能是匹配5的另一种方式,下士!A1:E30和OP应该选择一个比较类型并添加它。