Excel数据复制

Excel数据复制,excel,copying,Excel,Copying,我在工作表中有两列,如下表所示 我想做的是从第二列中提取值,但前提是对应的第一列值与我指定的值匹配。我可以用Vlookup来实现这一点,但是我也希望能够从第一列匹配的数组中指定行号 例如,如果我将值设置为'2',行号设置为'2',它将为我提供值14,因为它与第1列中的第一个值匹配,并创建了一个数组,然后为我提供了该数组的第二行,即14 有什么想法吗 1 10 1 11 1 12 2 13 2 14 2 15 3 16 3 17 3 18 答案可以扩展到您的案

我在工作表中有两列,如下表所示

我想做的是从第二列中提取值,但前提是对应的第一列值与我指定的值匹配。我可以用Vlookup来实现这一点,但是我也希望能够从第一列匹配的数组中指定行号

例如,如果我将值设置为'2',行号设置为'2',它将为我提供值14,因为它与第1列中的第一个值匹配,并创建了一个数组,然后为我提供了该数组的第二行,即14

有什么想法吗

1   10
1   11
1   12
2   13
2   14
2   15
3   16
3   17
3   18
答案可以扩展到您的案例,使用您正在查找的事件数作为输入

这是对以下内容的改编:

以下是使用用户定义函数的结果(公式栏显示单元格G3中的公式):


如果您的数据按示例中的顺序排序,即按第一列升序排序,然后按第二列升序排序。然后您可以组合使用
OFFSET()
INDEX()
MATCH()

这首先获取与查找值匹配的第一个单元格的
索引(…,MATCH())
的单元格地址,然后
OFFSET()
函数按您想要在该组中的行数将其删除。当然,这完全取决于所描述的排序

偏移量()“>

如果希望在未排序的第二列(但仍分组在第一列)中使用第k个最小条目,则可以使用:

=SMALL(OFFSET(second_column,MATCH(lookup_a,first_column,0)-1,0,MATCH(lookup_a,first_column,1)-MATCH(lookup_a,first_column,0)+1,1),entry_row)
这样做的好处是,如果您选择的内容超出范围,则返回
#N/A
。使用
IFERROR(…..,“”)
将其包围

或者,对未排序的第二列数据使用第一种方法,并仅检查偏移量以查看其是否保留查找值,您可以使用:

=IF(OFFSET(OFFSET(INDEX(second_column,MATCH(lookup_a,first_column,0)),entry_row-1,0),0,-1)=lookup_a,OFFSET(INDEX(second_column,MATCH(lookup_a,first_column,0)),entry_row-1,0),"")

第二列排序了吗?第一列是按升序排序的,第二列实际上是文本,但是偏移量、索引、匹配函数可以工作。很高兴听到这一点。第二列不需要根据反射进行排序,因为您只需按行号拉出。如果您需要第k个最小条目(如果第一个gr为oup仍在排序中。如果问题的答案完全符合您的要求,那么最好将其标记为这样,以阻止任何人在上面浪费时间。一般情况下为+1,因为这并不要求数字按顺序排列。这很有效,但是在我的实际数据列表中,条目的数量有所不同。是否可以使用函数return如果偏移量从下一个数组而不是我指定的数组中提取值,则为空值?是的,您可以检查偏移量是否已超出范围。
=SMALL(OFFSET(second_column,MATCH(lookup_a,first_column,0)-1,0,MATCH(lookup_a,first_column,1)-MATCH(lookup_a,first_column,0)+1,1),entry_row)
=IF(OFFSET(OFFSET(INDEX(second_column,MATCH(lookup_a,first_column,0)),entry_row-1,0),0,-1)=lookup_a,OFFSET(INDEX(second_column,MATCH(lookup_a,first_column,0)),entry_row-1,0),"")