计算范围内具有至少一个数字的列

时间:2018-03-26 17:26:51

标签: excel

我有一个大表按行和按行分类。每个类别中的行/列数是不规则的。 在下面的示例中,行分为颜色,列分为(a,b)组:

enter image description here

在行\列类别组合创建的每个矩形中,我需要计算包含至少一个数字的列数。
答案应该是:

enter image description here

我当然缺少的是上面M栏中的公式。 我从这开始:

=SUMPRODUCT(--($B$2:$H$9<>0)*--($A$2:$A$9=$L2)*--($B$1:$H$1=$K2))  

这会计算每个矩形中包含数字的所有单元格,但我仍然需要将其分成列,然后不计算单元格,但检查任何 列中的单元格包含一个数字,然后计算这些列。

如果我添加另一个表来聚合这部分路径然后从聚合表中计数,这当然会更容易。我的问题是,如果可以直接计算一次吗? (为什么?清洁,高效,优雅......)

感谢任何帮助解决这个问题。

2 个答案:

答案 0 :(得分:1)

你可以使用像这样的数组公式。它使用MMULT查找满足各种条件的单元格的列总数,然后使用SUM查找这些总数中有多少大于零。

=SUM(--(MMULT(TRANSPOSE(ROW($B$2:$H$9))^0,N($B$2:$H$9*($B$1:$H$1=$A11)*($A$2:$A$9=$B11)))>0))

enter image description here

必须使用 Ctrl Shift 输入

在反射时,您可以将其简化为

=SUM(--(MMULT(TRANSPOSE(ROW($B$2:$H$9))^0,$B$2:$H$9*($B$1:$H$1=$A11)*($A$2:$A$9=$B11))>0))

你也不需要N,因为MMult第二部分的乘法结果已经是一组数字

<?php
require 'db_connect.php';

$conn = Connect();//function is on db_connect file
$value_fname = $conn->real_escape_string($_POST['fname']);
$value_lname = $conn->real_escape_string($_POST['lname']);
$value_email = $conn->real_escape_string($_POST['email']);


$sql = "SELECT count(email) FROM inquiry WHERE email='$value_email'";
$result = $conn->query($sql);
if (mysqli_num_rows($result) > 0) { // duplicate entry found
header('Location: error.html');
$conn->close();
} else {
$query = "INSERT INTO `inquiry` (`fname`,`lname`, `email`, 
`time_stamp`) VALUES ('$value_fname','$value_lname', '$value_email', 
CURRENT_TIMESTAMP)";
$success = $conn->query($query);

if (!$success) {
    header('Location: error.html');
    die("Couldn't enter data: " . $conn->error);
} else {
    $to = $value_email; // Send email to our user
    $subject = 'Signup | Examples'; // Give the email a subject
    $message = '
Hi ' . $value_fname . ',
Thanks for signing up!
Your email address has been recorded with us, you can now get
Latest information from us .

'; // Our message above including the link

    $headers = 'From:noreply@example.io' . "\r\n"; // Set from 
headers
    mail($to, $subject, $message, $headers); // Send our email
    header('Location: success.html');

}

}

$conn->close();

?>

答案 1 :(得分:0)

我认为使用COUNTIFS更容易实现您想要的效果。所以输入

enter image description here

我可以得到

的输出表

enter image description here

在M栏中使用以下公式:

=COUNTIFS($A$2:$A$9,$L2,$B$2:$B$9,"<>0",$C$2:$C$9,"<>0",$D$2:$D$9,"<>0",$E$2:$E$9,"<>0",$F$2:$F$9,"<>0",$G$2:$G$9,"<>0",$H$2:$H$9,"<>0")