我正在尝试整理一个日常定期付款的日历,这个日历将开始,付款的日期和取消的日期(如果有的话),但是我正在努力设置我的SUMIFS功能。我已经设置了一个示例here。
我要做的是在付款当天添加付款值,如果开始日期小于日期,并且仅当取消的日期为空或日期在取消日期之前。
付款清单:
A B C
1 Payment | Begun | Cancelled
---------+------------+------------
2 £5.00 | 01/01/2016 |
3 £9.00 | 04/01/2016 | 01/02/2016
日历(我期待):
E F
1 Date | Payment
----------+---------
2 01/01/16 | £5.00
3 02/01/16 | £0.00
4 03/01/16 | £0.00
5 04/01/16 | £9.00
...
33 01/02/16 | £5.00
34 02/02/16 | £0.00
35 03/02/16 | £0.00
36 04/02/16 | £0.00
所以在这个例子中:应该在01/01/16和01/02/16添加5英镑,而仅在04/01/16添加9英镑。
到目前为止,我在F
列中已经:
=SUMIFS($A$2:$A$3, DAY($B$2:$B$3), "="&DAY(E2), $B$2:$B$3, "<="&E2, $C$2:$C$3, ">="&E2)
答案 0 :(得分:1)
F2中的这个数组公式应该可以达到你想要的效果:
=SUM(IF((DAY($B$2:$B$3)=DAY(E2))*(E2>=$B$2:$B$3)*(E2<=$C$2:$C$3),$A$2:$A$3))+SUM(IF((DAY($B$2:$B$3)=DAY(E2))*(E2>=$B$2:$B$3)*(""=$C$2:$C$3),$A$2:$A$3))
这是一个数组公式,必须使用Ctrl-Shift-Enter确认。然后复制下来。
&#39;或&#39;在数组公式中必须使用+
。如果您拥有AND
*
,那么<?php
$filename = 'path/filename.ext';
// Read the file into an array of lines
$lines = file($filename, FILE_IGNORE_NEW_LINES);
// Group name
$group = '????';
// Our result
$GroupsAndNames = array();
// Loop over all lines; extract group names and person names
foreach($lines as $line) {
if (trim($line)=='') continue; // ignore empty lines
if ( ($line[0]!=' ') && ($line[0]!="\t") ) {
// it's a group entry, so create an empty group array
$group = trim($line);
$GroupsAndNames[$group] = array();
} else {
// it's a person's name, so add to group array
$GroupsAndNames[$group][] = trim($line);
}
}
echo '<!DOCTYPE html>
<html>
<head>
<title>Boys and Girls</title>
<head>
<style>
div input + div > div {
display: none;
padding-left:24px;
}
div input:checked + div > div {
display: block;
}
</style>
</head>
<body>' . PHP_EOL;
foreach($GroupsAndNames as $key => $group) {
echo ' <div>' . PHP_EOL;
echo ' <label for="'.$key.'">'.$key.'</label>' . PHP_EOL;
echo ' <input type="checkbox" id="boys" />' . PHP_EOL;
echo ' <div>' . PHP_EOL;
foreach($group as $name) {
echo ' <div>'.$name.'</div>' . PHP_EOL;
}
echo ' </div>' . PHP_EOL;
echo ' </div>' . PHP_EOL;
}
echo '
</body>
</html>
' . PHP_EOL;
?>
就可以了。
我假设您要在列A:C中添加日期,您可以将所有小的绝对范围更改为所需的范围,它将适用于倍数。
请原谅我们的倒退日期。
答案 1 :(得分:0)
你应该在你的情况下添加两个单独的SUMIF()的结果:
=SUMIFS($A$2:$A$3, DAY(B$2:B$3), "="&DAY(E2), $B$2:$B$3, "<="&E2, $C$2:$C$3,">="&E2)
+
SUMIFS($A$2:$A$3, DAY(B$2:B$3), "="&DAY(E2), $B$2:$B$3, "<="&E2, ISBLANK($C$2:$C$3),TRUE)
使用Ctrl + Shift +确认输入