在一个工作表中堆叠多个查询输出

时间:2016-03-05 11:47:42

标签: google-sheets

对于我的部门,我为每位老师制作了一份动态灵活的概述表,展示了他的辅导学生。

在一个概述表中,我做了几个查询,从不同来源收集数据(不同年份的学生和教师)。查询位于一列中,因为我想为每位教师生成一个列表。

但是查询公式生成的输出可以在长度上不同(=它所占用的行数=学生数),这就是为什么我必须在概述表中允许固定行数。这可能导致我的列表中出现空白行。

是否有办法保持灵活性(每位教师都有不同数量的辅导学生),但删除空行?

2 个答案:

答案 0 :(得分:1)

您可以使用 /** * Populate new items in the list. */ @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; final Conference conference = (Conference)getItem(position); if (convertView == null) { convertView = mInflater.inflate(R.layout.item_conference_fragment, parent, false); holder = new ViewHolder(); holder.btnOverflow = (ImageButton)convertView.findViewById(R.id.btn_overflow); ... convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } final ViewHolder finalHolder = holder; holder.btnOverflow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finalHolder.btnOverflow.setTag(position); PopupMenu pm = new PopupMenu(context, v); Menu menu = pm.getMenu(); menu.add("Edit"); menu.add("Delete"); pm.show(); pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (item.getTitle().equals("Delete")) { conferenceTable.delete(conference.id); } else if (item.getTitle().equals("Edit")) { } return false; } }); } }); ... return convertView; } 列和行,组合范围,并将范围包装在;中。 (您需要在表示连接范围后添加curlies)
假设在{}汇总来自Sheet1Sheet2的数据,您可以使用:

Sheet3

={QUERY(Sheet2!A2:B, "SELECT A, B WHERE A <> ''"); QUERY(Sheet3!A2:B, "SELECT A, B WHERE A <> ''")} 是学生姓名(或任何不能为空的)和A任意像标记的东西。当然,该查询可能会像您想要的那样复杂(可能最好预先构建并通过引用重用它)。

答案 1 :(得分:0)

如果每位教师的任何工作表都具有相同数量的相同列,那么您的数据结构良好,您可以对它们进行单一查询。

=query({Sheet1!A1:C;Sheet2!A2:C},"select * where Col1 <> ''")

注意一些细节:

  1. 查询只应使用带标题的一行,使用带标题的Sheet1!A1:C和其他SheetName!A2:C
  2. 当查询包含源,包含多个表时,请使用Col1, Col2, Col3..。而不是列的字母A, B, C...它可能更方便。当从其他文件导入数据时,此规则也有效。