先上每两行中取出一行的公式
INDEX(A$2:A$10, ROW(A2) * 2 - 2, 1)
从 A2:A10 的区域中,获取 A2、A4、A6、A8… 的值。
事情是这样的,之前做了一个批量提交审批的功能,没有做防重复提交处理,而且每个提交人每次需要处理的数据量还挺大。这周有个人提交数据之后刷新页面发现还有未提交状态的数据加载出来,于是又全部勾选再次进行了提交。就这样,申请表中就出现了部分重复的数据。
这些重复的数据需要清理掉其中的一条,重复数据除了 id 之外,其他字段都一样,需要先找出要删除的数据 id。
先用 SQL 按业务字段 group by 出来重复的数据,导出到 Excel 中,然后按业务字段进行排序,将重复数据排到一起。
然后每两行中取出一行的 id,拿到这些 id 就去进行删除就行了。怎么每两行取取出其中的一行呢?
需要用到两个函数:INDEX(array, row_num, [column_num]) 和 ROW()。
INDEX(array, row_num, [column_num])
从 array 区域中获取 row_num 行 column 列 的值。
ROW()
获取某个单元格的行号,比如 ROW(A1) 结果就是 1。
技巧就在于怎么得到目标行号,然后放到 INDEX() 函数中。
| 单元格行 | 要获取的目标行的行号(隔1行) | 对应的公式计算公式 | 对应的 Excel 公式 |
|---|---|---|---|
| A1 | 1 | 2 x ROW(A1) - 1 | INDEX(A$1:A$10, 2 * ROW(A1) - 1, 1) |
| A2 | 3 | 2 x ROW(A2) - 1 | |
| A3 | 5 | 2 x ROW(A3) - 1 | |
| A4 | 7 | 2 x ROW(A4) - 1 | |
| A5 | 9 | 2 x ROW(A5) - 1 | |
| A6 | |||
| A7 | |||
| A8 | |||
| A9 | |||
| A10 |
| 单元格行 | 要获取的目标行的行号(隔2行) | 对应的公式计算公式 | 对应的 Excel 公式 |
|---|---|---|---|
| A1 | 1 | 3 x ROW(A1) - 2 | INDEX(A$1:A$10, 3 * ROW(A1) - 2, 1) |
| A2 | 4 | 3 x ROW(A2) - 2 | |
| A3 | 7 | ||
| A4 | 10 | ||
| A5 | |||
| A6 | |||
| A7 | |||
| A8 | |||
| A9 | |||
| A10 |