我有一个电子表格,其中包含学生评估列表。它由四列组成:
A B C D
Student Standard Date Score
在另一张表格中,我有一张表格,其中包含A栏中的学生列表和第1行的标准列表。
我想查询评估电子表格,以便根据当前标准返回当前学生的最新评估分数。目前我在单元格K3中有这个公式:
=Query(Assessments!A:D,"select D where(A="&$A3&" and B="&K$1&") order by max(C) limit 1")
但它给了我这个错误:
无法解析函数QUERY参数2的查询字符串:AGG_IN_ORDER_NOT_IN_SELECTMAX(
C
)
修改 我得到了一些很好的答案,但我想我的表现很差。我真正需要的是最近评估的分数。 JPV和pnuts的结果都给出了最近评估的日期。以下是实际文件的精简版:spreadsheet。
在Students
表单中,我需要绿色单元格中的公式,根据{{1}中的数据生成从0
到4
的数字表。
这就是为什么在查询中我试图选择D,但是按max(C)排序。
我调整了其中一个公式并得到了:
Assessments
答案 0 :(得分:2)
除了pnuts提供的精细解决方案(样本数据为+1)之外,这里还有一些使用查询的可能性(检查this spreadsheet中的绿色单元格。
=query(A2:D20, "select A, B, MAX(C) GROUP BY A, B",1)
或
=iferror(query(A3:D20, "Select A, B, C where A = '"&G20&"' and B = '"&I20&"' order by C desc limit 1",0), "no data found")
应根据标准创建一个包含每位学生最新日期的表格。
如果您想使用单元格引用(单元格中包含学生姓名而另一个单元格保留标准),请尝试:
package compguse;
import java.util.*;
public class Compguse {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
String a;
String b;
String c;
String ans;
String d;
int input =1;
System.out.println("do u have your number?");
a = scan.nextLine();
while (a.equalsIgnoreCase("yes"))
{
int ran = (int) Math.floor(Math.random()*100)+1;
System.out.println(" is" +ran +" your num?");
a = scan.nextLine();
if(a.equalsIgnoreCase("no"))
{
System.out.println("Was i too high or low?");
b = scan.nextLine();
if(b.equalsIgnoreCase("high"))
{
int ran1 = (int) Math.floor(Math.random() < (int) ran);
}
}
}
}
其中G20是学生姓名,I20是标准(适合的变化范围)。
答案 1 :(得分:1)
不使用查询功能,但似乎查询评估电子表格,以便根据当前标准返回当前学生的最新评估&#34;:
=iferror(max(filter(Assessments!$A$1:$D$99,Assessments!$A$1:$A$99=$A3,Assessments!$B$1:$B$99=K$1)),"")
构造数据为例:
Student Standard Date Score
Bod5 C 2/2/2015 9
Bod6 B 1/1/2015 8
Bod7 C 7/7/2015 7
Bod8 A 9/9/2015 6
Bod1 B 3/3/2015 5
Bod2 C 4/4/2015 43
Bod3 B 6/6/2015 2
Bod4 C 1/1/2015 1
Bod1 A 1/1/2016 8
Bod1 A 2/2/2017 7
Bod1 A 1/1/2013 6
Bod1 A 1/1/2011 5
Bod9 A 9/9/2009 9
Bod9 B 1/1/2011 3
Bod9 C 3/3/2013 2
Bod9 A 10/10/2010 4
Bod9 B 11/1/2001 2
Bod9 C 4/4/2014 1
输出: