水平索引匹配:在矩阵中查找文本并返回标题

时间:2019-01-17 14:43:23

标签: excel find match excel-2010

我有一个名字列表。我还有一个矩阵,其中包含名称和其对应的审计程序作为列标题。我需要在此矩阵中查找名称,找到名称后,我需要获取审计程序,即列标题。我有一个可以垂直运行的代码,但是找不到使它水平运行的公式。

enter image description here

这是我对垂直矩阵的工作代码:

    <script>
   function InviteLink( id, url ){
    console.log(id);
    $.ajax({
      type: "POST",
      url: https://abc.hrm.com/auth/login,
      data: { 'id' : id },      
      success: function(data) {
      }
      });
} 
    </script>

3 个答案:

答案 0 :(得分:1)

使用:

=IFERROR(INDEX(auditors,AGGREGATE(15,7,(COLUMN(names)-MIN(COLUMN(names))+1)/(names=H2),1)),"")

假设您的第一个标题位于A1中。将该公式放在A2中,然后上下复制。

enter image description here

答案 1 :(得分:0)

将其用作数组公式似乎可以很好地解决问题:

{=INDEX(Auditors;1;SUM(IF(Names=Auditors;COLUMN(Auditors);0)))}

这可以通过创建与表大小相同的矩阵来实现,其中单元格包含0或单元格的列(如果存在匹配项)。请注意,它假定您的Auditor定义的范围从第1列开始,并且包含标题和数据(我使用了$ A $ 1:$ C $ 4)

此外,如果没有匹配项,则默认情况下将返回审核员1;要强制执行错误,您可以使用SUM结果为零的事实,例如:

{=INDEX(Auditors;1;1/(1/SUM(IF(Names=Auditors;COLUMN(Auditors);0))))}

此外,由于它会在整个“审核员”表中查找,因此也会匹配审核员本身;如果这不是您想要的,则可能要为标题和审计程序表的数据定义单独的范围,或相应地对它们进行抵消。

答案 2 :(得分:0)

有时候,有一些原因不希望使用数组公式。这是一个使用常规旧public class ExpenseAdapter extends RecyclerView.Adapter<ExpenseAdapter.ItemViewHolder> { private ArrayList<Item> mExpenseList; public static class ItemViewHolder extends RecyclerView.ViewHolder { public TextView frag_name; public TextView frag_price; public TextView frag_date; public ItemViewHolder(@NonNull View itemView) { super(itemView); frag_name.findViewById(R.id.recycler_name); frag_price.findViewById(R.id.recycler_price); frag_date.findViewById(R.id.recycler_date); } } @NonNull @Override public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.expense, parent, false); ItemViewHolder viewHolder = new ItemViewHolder(v); return viewHolder; } // constructor to receive list of expenses for recycler view to process public ExpenseAdapter(ArrayList<Item> expenseList) { mExpenseList = expenseList; } @Override public void onBindViewHolder(@NonNull ItemViewHolder itemViewHolder, int i) { Item currItem = mExpenseList.get(i); itemViewHolder.frag_name.setText(currItem.getName()); itemViewHolder.frag_price.setText(Integer.toString(currItem.getPrice())); itemViewHolder.frag_date.setText(currItem.getDatePurhase()); } @Override public int getItemCount() { return mExpenseList.size(); } } 的示例。

SUMPRODUCT

所有单元格/范围都应固定,但“ specific_name”除外。

  • header_row从审核员1到审核员3为1乘3范围
  • 名称是矩阵中名称的3 x 3范围
  • specific_name是具有您要查找的名称的单个单元格
  • header_row_first_cell是header_row中的第一个单元格,因此审核员1

此外,我通常喜欢索引我的行和列,而不是=INDEX(header_row,SUMPRODUCT((names=specific_name)*(COLUMN(header_row)-COLUMN(header_row_first_cell)+1))) 废话。因此,在标题上方,我将对第1到3列进行编号,并简单地使用该范围。

COLUMN(header_row)-COLUMN(header_row_first_cell)+1