Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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,我有一个数据列“降雨”,一个列在该日期; 我打算在一个单独的专栏中从中提取连续几天的降雨。 通过以下公式,我提取了连续的: columnF=IF(B2>0,SUM(F1)+1,0) 但结果在一列中,我无法像附件中那样将它们分开(请参见所需结果)。 如果我们想在一个单独的列中提取降雨的连续性 怎么办 我的结果是: 预期结果: 以下是Ted D的评论。。。第二个helper列的可能公式是(在单元格中G2): 这将在我们行下方的计数器列(F)中查找第一个0(向下查看1000行左右-可以根据需

我有一个数据列“降雨”,一个列在该日期; 我打算在一个单独的专栏中从中提取连续几天的降雨。 通过以下公式,我提取了连续的:

columnF=IF(B2>0,SUM(F1)+1,0)
但结果在一列中,我无法像附件中那样将它们分开(请参见所需结果)。 如果我们想在一个单独的列中提取降雨的连续性 怎么办

我的结果是:

预期结果:
以下是Ted D的评论。。。第二个helper列的可能公式是(在单元格中
G2
):

这将在我们行下方的计数器列(
F
)中查找第一个
0
(向下查看1000行左右-可以根据需要更改
999
)。我们用它加上当前计数器来计算块的大小

从那里,我们可以使用
dx1day
等标题制作列,并使用以下公式填充它们:

=IF($G2=VALUE(SUBSTITUTE(MID(H$1,3,999),"day","")),$F2,"")
这是从列顶部的
dx1day
解析数字(在本例中为
H
)(如果仅使用数字和自定义格式,则可以保存该位*)。然后检查当前的“块大小”值(列
G
)是否与标题中的值相同。如果是,则复制计数器值(从列
F
),否则为空

您可以通过将
$G2
替换为
(IF($F2=0,0,MATCH(0,$F3:$F999,0)-1+$F2)来摆脱第二个helper列
。——但是IF会让您更难理解(和调试:-)


*这样做的方法是使用自定义格式,其中“Type”为
“dx”0“day”
。。。然后公式变为
=IF($G2=H$1,$F2,“”)
=IF($IF($F2=0,0,MATCH(0,$F3:$F999,0)-1+$F2))=H$1,$F2,“”
,适用于Ted注释后面的无第二助手列版本。。。第二个helper列的可能公式是(在单元格中
G2
):

这将在我们行下方的计数器列(
F
)中查找第一个
0
(向下查看1000行左右-可以根据需要更改
999
)。我们用它加上当前计数器来计算块的大小

从那里,我们可以使用
dx1day
等标题制作列,并使用以下公式填充它们:

=IF($G2=VALUE(SUBSTITUTE(MID(H$1,3,999),"day","")),$F2,"")
这是从列顶部的
dx1day
解析数字(在本例中为
H
)(如果仅使用数字和自定义格式,则可以保存该位*)。然后检查当前的“块大小”值(列
G
)是否与标题中的值相同。如果是,则复制计数器值(从列
F
),否则为空

您可以通过将
$G2
替换为
(IF($F2=0,0,MATCH(0,$F3:$F999,0)-1+$F2)来摆脱第二个helper列
。——但是IF会让您更难理解(和调试:-)


*这样做的方法是使用自定义格式,其中“Type”为
“dx”0“day”
。。。然后公式变为
=IF($G2=H$1,$F2,“”)
=IF($IF($F2=0,0,匹配(0,$F3:$F999,0)-1+$F2))=H$1,$F2,“”
对于无第二个辅助列版本,计算两个辅助列(隐藏是确定的)。你拥有的第一个。第二个将具有运行总数的最大值。所以{0,2,2,0,2,2,0,3,3,0,4,4,4,0}。以某种方式利用第一个辅助列来派生第二个辅助列。dx#day列中的所有单元格都有公式
=if(column()-column(dx1day)+1=2nd helper列,1st helper列,“””
,其中helper列地址引用带有绝对列字母和相对行号(应与公式行相同)。这样,当复制公式时,行引用将正确更新。计算两个辅助列(隐藏是确定的)。你拥有的第一个。第二个将具有运行总数的最大值。所以{0,2,2,0,2,2,0,3,3,0,4,4,4,0}。以某种方式利用第一个辅助列来派生第二个辅助列。dx#day列中的所有单元格都有公式
=if(column()-column(dx1day)+1=2nd helper列,1st helper列,“””
,其中helper列地址引用带有绝对列字母和相对行号(应与公式行相同)。这样,当复制公式时,行引用将正确更新。非常感谢much@alirezakarbalaee-如果这对你有效,请接受答案非常感谢much@alirezakarbalaee-如果这对您有效,请接受答案