对于我的部门,我为每位老师制作了一份动态灵活的概述表,展示了他的辅导学生。
在一个概述表中,我做了几个查询,从不同来源收集数据(不同年份的学生和教师)。查询位于一列中,因为我想为每位教师生成一个列表。
但是查询公式生成的输出可以在长度上不同(=它所占用的行数=学生数),这就是为什么我必须在概述表中允许固定行数。这可能导致我的列表中出现空白行。
是否有办法保持灵活性(每位教师都有不同数量的辅导学生),但删除空行?
答案 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)
假设在{}
汇总来自Sheet1
和Sheet2
的数据,您可以使用:
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 <> ''")
注意一些细节:
Sheet1!A1:C
和其他SheetName!A2:C
Col1, Col2, Col3..
。而不是列的字母A, B, C...
它可能更方便。当从其他文件导入数据时,此规则也有效。