将排名分配给按顺序变化的项目

问题描述 投票:0回答:2

我正在尝试从在线调查问卷中构建数据集。在本调查问卷中,参与者被要求列出6个项目。这些项目用1到6的数字表示(提及的顺序无关紧要)。之后,参与者被要求将这些项目从最重要的项目排列到最不重要的项目(在这里订购事项)。现在我有三列“命名项目”,“项目排名”和“排名”。最后一列表示每个案例的排名位置。因此,想法是查看第一列“命名项目”中的数字,并在第二列“排名项目”中搜索其位置,并将其位置返回到第三列对应的行。

由于数字从1到6,每6行进程必须在第7行再次开始。我共有186个参与者,这意味着共有1116个项目。什么是最有效的方法来防止人为错误?

以下是手动完成工作表的示例:

+----------------------+-----------------------------+------+
| Order of named items | Items ranked (# = Identity) | Rank |
+----------------------+-----------------------------+------+
|                    1 |                           2 |    4 |
|                    2 |                           5 |    1 |
|                    3 |                           6 |    6 |
|                    4 |                           1 |    5 |
|                    5 |                           4 |    2 |
|                    6 |                           3 |    3 |
|                    1 |                           1 |    1 |
|                    2 |                           2 |    2 |
|                    3 |                           3 |    3 |
|                    4 |                           4 |    4 |
|                    5 |                           5 |    5 |
|                    6 |                           6 |    6 |
|                    1 |                           1 |    1 |
|                    2 |                           2 |    2 |
|                    3 |                           3 |    3 |
|                    4 |                           4 |    4 |
|                    5 |                           5 |    5 |
|                    6 |                           6 |    6 |
|                    1 |                           5 |    3 |
|                    2 |                           6 |    4 |
|                    3 |                           1 |    5 |
|                    4 |                           2 |    6 |
|                    5 |                           3 |    1 |
|                    6 |                           4 |    2 |
|                    1 |                           2 |    2 |
|                    2 |                           1 |    1 |
|                    3 |                           6 |    4 |
|                    4 |                           3 |    5 |
|                    5 |                           4 |    6 |
|                    6 |                           5 |    3 |
+----------------------+-----------------------------+------+
excel excel-vba vba
2个回答
0
投票

您可以使用此非易失性函数:

=MATCH(A2,INDEX(B:B,INT((ROW(1:1)-1)/6)*6+2):INDEX(B:B,INT((ROW(1:1)-1)/6)*6+7),0)

enter image description here


0
投票

假设第一列开始于A2,第二列开始于B2,请使用C2中的此公式向下复制

=MATCH(A2,OFFSET(B$2,6*INT((ROWS(C$2:C2)-1)/6),0,6),0)

OFFSET返回所需的6个单元格范围,MATCH找到相关项目的位置

见下面的截图

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.