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
Excel 奇偶行上的交替公式_Excel_Vba - Fatal编程技术网

Excel 奇偶行上的交替公式

Excel 奇偶行上的交替公式,excel,vba,Excel,Vba,我试图在同一列中的偶数行上写一个公式,在奇数行上写另一个公式。搜索此网站时,我发现以下代码: Sub OddRowAlert() With Range("B16:B100") .Formula = "=IF((MOD(ROW(B16),2)),""Odd"",""Even"")" .Formula = .Value End With End Sub 这适用于文本或简单公式。然而,当我用公式替换“奇数”或“偶数”时,我会收到一个 运行时错误“1004”:应用程序定义的错误或对

我试图在同一列中的偶数行上写一个公式,在奇数行上写另一个公式。搜索此网站时,我发现以下代码:

Sub OddRowAlert()
With Range("B16:B100")
    .Formula = "=IF((MOD(ROW(B16),2)),""Odd"",""Even"")"
    .Formula = .Value
End With
End Sub  
这适用于文本或简单公式。然而,当我用公式替换“奇数”或“偶数”时,我会收到一个

运行时错误“1004”:应用程序定义的错误或对象定义的错误

以下是我正在尝试的代码:

Sub Daily_Analysis()
'
' Daily_Analysis Macro
'
Lastrow = Range("B" & Rows.Count).End(xlUp).Row

Range("L7:L" & Lastrow).Formula = "=Text(A7,""dddd"")"

With Range("M7:M" & Lastrow)
    .Formula = "=IF((MOD(ROW(M7),2)),""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""Number of times over 75%"",L7=L6,"""")"",""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L6<>L5,COUNTIFS(D7:D103,"">75%"",K7:K103,""Working"")+COUNTIFS(G7:G103,"">75%"",K7:K103,""Working""),L6=L5,"""")"")"
    .Formula = .Value
End With

With Range("N7:N" & Lastrow)
     .Formula = "=IF((MOD(ROW(N7),2)),""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""Percentage of the day"",L7=L6,"""")"",""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,M8/COUNTIFS(K7:K102,""working"",L7:L102,L7),L7=L6,"""")"")"
     .Formula = .Value
End With

With Range("O7:O" & Lastrow)
     .Formula = "=IF((MOD(ROW(O7),2)),""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""hours of poor performance"",L7=L6,"""")"",""=IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,(15*M8)/60,L7=L6,"""")"")"
     .Formula = .Value
End With

'
End Sub
Sub-Daily_分析()
'
“每日分析宏”
'
Lastrow=范围(“B”和Rows.Count).End(xlUp).Row
范围(“L7:L”和Lastrow)。公式=“=文本(A7”,“dddd”)
带范围(“M7:M”和Lastrow)
.Formula=“=IF((MOD(ROW(M7),2)),”=IFS(L7=“”)周六“,”L7=“”,周日“,”L7L6“,”超过75%的次数“,”L7=L6“,”IFS(L7=“”)周六“,”L7=“”,周日“,”L6L5,“COUNTIFS(D7:D103“,”75%,”K7:K103“,”工作“)+COUNTIFS(G7:G103“,”75%,”K7:K103“,”工作“,”L6=L5“)
.Formula=.Value
以
带范围(“N7:N”和Lastrow)
.Formula=“=IF((MOD(ROW(N7),2)),”=IFS(L7=“”星期六“,”L7=“”星期日“,”L7L6“,”一天的百分比“,”L7=L6“,”)”,“=IFS(L7=“”星期六“,”L7=“”,”星期日“,”L7L6,M8/COUNTIFS(K7:K102“,”工作“,”L7:L102,L7),”L6“)”
.Formula=.Value
以
带范围(“O7:O”和Lastrow)
.Formula=“=IF((MOD(ROW(O7),2)),”=IFS(L7=“”星期六“,”L7=“”星期日“,”L7L6“,”表现不佳的小时数“,”L7=L6“,”),“=IFS(L7=“”星期六“,”L7=“”星期日“,”L7L6,(15*M8)/60,L7=L6“)”
.Formula=.Value
以
'
端接头

如注释中所述,嵌套公式不会将它们包围在
周围,也没有
=
,只需嵌套它们:

Sub Daily_Analysis()
'
' Daily_Analysis Macro
'
Lastrow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row

ActiveSheet.Range("L7:L" & Lastrow).Formula = "=Text(A7,""dddd"")"

With ActiveSheet.Range("M7:M" & Lastrow)
    .Formula = "=IF((MOD(ROW(M7),2)),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""Number of times over 75%"",L7=L6,""""),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L6<>L5,COUNTIFS(D7:D103,"">75%"",K7:K103,""Working"")+COUNTIFS(G7:G103,"">75%"",K7:K103,""Working""),L6=L5,""""))"
    .Value = .Value
End With

With ActiveSheet.Range("N7:N" & Lastrow)
     .Formula = "=IF((MOD(ROW(N7),2)),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""Percentage of the day"",L7=L6,""""),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,M8/COUNTIFS(K7:K102,""working"",L7:L102,L7),L7=L6,""""))"
     .Value = .Value
End With

With ActiveSheet.Range("O7:O" & Lastrow)
     .Formula = "=IF((MOD(ROW(O7),2)),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,""hours of poor performance"",L7=L6,""""),IFS(L7=""Saturday"","""",L7=""Sunday"","""",L7<>L6,(15*M8)/60,L7=L6,""""))"
     .Value = .Value
End With

'
End Sub
Sub-Daily_分析()
'
“每日分析宏”
'
Lastrow=ActiveSheet.Range(“B”和Rows.Count).End(xlUp).Row
ActiveSheet.Range(“L7:L”和Lastrow.Formula=“=Text(A7”,“dddddd”)”
使用ActiveSheet.Range(“M7:M”和Lastrow)
.Formula=“=IF((MOD(ROW(M7),2)),IFS(L7=“”)Saturday“,”L7=“”Saturday“,”L7L6“,”超过75%的次数“,”L7=L6“,”IFS(L7=“”)Saturday“,”L7=“”,”Sunday“,”L6L5,“COUNTIFS(D7:D103“,”75%,”K7:K103“,”工作“)+COUNTIFS(G7:G103“,”75%,”K7:K103“,”工作“,”L6=L5“)”
.Value=.Value
以
使用ActiveSheet.Range(“N7:N”和Lastrow)
.Formula=“=IF((MOD(ROW(N7),2))、IFS(L7=“”周六“、”L7=“”周日“、”L7L6“、”一天的百分比“、”L7=L6“)”、IFS(L7=“”周六“、”L7=“”周日“、”L7L6、M8/COUNTIFS(K7:K102“、”工作“、”L7:L102、L7)、L7=L6“)
.Value=.Value
以
使用ActiveSheet.Range(“O7:O”和Lastrow)
.Formula=“=IF((MOD(ROW(O7),2)),IFS(L7=“”星期六“,”L7=“”星期日“,”L7L6“,”表现不佳的小时数“,”L7=L6“,”IFS(L7=“”星期六“,”L7=“”星期日“,”L7L6,(15*M8)/60,L7=L6“,”)
.Value=.Value
以
'
端接头

顺便说一句,取出类似的项目并重新安排,我们可以缩短公式:

Sub Daily_Analysis()
'
' Daily_Analysis Macro
'
Lastrow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row

ActiveSheet.Range("L7:L" & Lastrow).Formula = "=Text(A7,""dddd"")"

With ActiveSheet.Range("M7:M" & Lastrow)
    .Formula = "=IF(OR(WEEKDAY(A7,2)>5,l7=l6),"""",IF(Mod(row(),2),""Number of times over 75%"",COUNTIFS(D7:D103,"">75%"",K7:K103,""Working"")+COUNTIFS(G7:G103,"">75%"",K7:K103,""Working"")))"
    .Value = .Value
End With

With ActiveSheet.Range("N7:N" & Lastrow)
     .Formula = "=IF(OR(WEEKDAY(A7,2)>5,l7=l6),"""",IF(Mod(row(),2),""Percentage of the day"",M8/COUNTIFS(K7:K102,""working"",L7:L102,L7)))"
     .Value = .Value
End With

With ActiveSheet.Range("O7:O" & Lastrow)
     .Formula = "=IF(OR(WEEKDAY(A7,2)>5,l7=l6),"""",IF(Mod(row(),2),""hours of poor performance"",L7<>L6,(15*M8)/60))"
     .Value = .Value
End With

'
End Sub
Sub-Daily_分析()
'
“每日分析宏”
'
Lastrow=ActiveSheet.Range(“B”和Rows.Count).End(xlUp).Row
ActiveSheet.Range(“L7:L”和Lastrow.Formula=“=Text(A7”,“dddddd”)”
使用ActiveSheet.Range(“M7:M”和Lastrow)
.Formula=“=IF(或(工作日(A7,2)>5,l7=l6),”,IF(Mod(row(),2),“超过75%的次数”,COUNTIFS(D7:D103,“>75%”,K7:K103,“工作”)+COUNTIFS(G7:G103,“>75%”,K7:K103,“工作”))
.Value=.Value
以
使用ActiveSheet.Range(“N7:N”和Lastrow)
.Formula=“=IF(或(工作日(A7,2)>5,l7=l6),”,IF(Mod(row(),2),“一天的百分比”,M8/COUNTIFS(K7:K102,“工作”,l7:L102,l7)))
.Value=.Value
以
使用ActiveSheet.Range(“O7:O”和Lastrow)
.Formula=“=IF(或(工作日(A7,2)>5,l7=l6),”,IF(Mod(row(),2),“性能不佳的小时数”,L7L6,(15*M8)/60))”
.Value=.Value
以
'
端接头

公式中的
=
不能在
IFS
前面。总是有助于
调试。打印
公式以确保它是您想要的,然后再尝试将其写入单元格。也不要打印
IFS
@ScottCraner yep周围的
,也就是刚刚发现了这一点,按照我自己的建议,而不是仅仅盯着公式看。哈哈,我想这都是为了设定期望值。当我移除周围的“”和='s时,我正在接收公式的结果。我所期望的是将If(mod)的结果公式作为值写入单元格。两个示例中的第二个工作起来很奇怪,我还不太清楚为什么。第一个例子给出了我所要求的(虽然这不是我真正需要的,但我已经学会了)