0

我有一个布局良好的 excel 电子表格,看起来像这样:

| NAME | SERIAL | GUN1 | OPTIC1 | OPTIC 2 |
+-----------------------------------------+
| Jonn | W0465  | MK19 | 006000 |         | 
+-----------------------------------------+
| Jimm | W1465  | MD24 |        | 455212  | 
+-----------------------------------------+

我希望它能够将该数据生成到另一个包含表单的工作表中。在此表格中,每个项目(枪 1、光学设备等)有 1 行,但并非每个人都拥有完全相同的设备(乔恩拥有 OPTIC1,而吉姆拥有 OPTIC2,但有些人可能根本没有光学设备)。

表单将如下所示(使用上面的示例数据)。

|  TYPE  | SERIAL | NAME |
+------------------------+
|  GUN1  |  MK19  | Jonn |
+------------------------+
| OPTIC1 | 006000 | Jonn |
+------------------------+
|  GUN1  |  MD24  | Jimm |
+------------------------+
| OPTIC2 | 455212 | Jimm |
+------------------------+

关于如何有效地做到这一点的任何想法?需要有条件语句和引用,但我不确定如何有效地完成所有这些。

我能够使用=SHEET1!$C2etc 成功引用数据。然后我为“Jonn”制作了 2 行,并且所有内容都被完美地填写(使用绝对和相对引用)。但是,当我选择这两行并尝试复制它们时,它会生成行=SHEET1!$C4而不是=SHEET1!$C3(注意 C4 和 C3)。由于 Jonn 的数据在表单上是两行,因此相对引用将跳过原始 Excel 表中的第三行。有道理?请提问

谢谢

4

1 回答 1

1

所以忽略了表 1 中的SERIAL列(这让我有点困惑)。

如果您可以保证您将拥有 OPTIC1 或 OPTIC2(不是两者),那么使用工作表函数是可能的。

如果您有可能同时拥有这两者,那么您仍然可以这样做,但您最终可能会在列表中出现空白。

我假设您可以拥有一个光学器件,而不是两者,并且两张纸上的第 1 行都用作列标题。

您可以使用该ROW()函数和一些数学来生成您的列表。

Sheet2!A2 ==IF((ABS(ROW()/2)+1-(INT(ROW()/2)+1))=0,"GUN1",IF(INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))="","OPTIC2","OPTIC1"))

Sheet2!B2 ==IF((ABS(ROW()/2)+1-(INT(ROW()/2)+1))=0,INDIRECT("Sheet1!C" & (INT(ROW()/2)+1)),IF(INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))="",INDIRECT("Sheet1!E" & (INT(ROW()/2)+1)),INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))))

Sheet2!C2 ==INDIRECT("Sheet1!A" & INT(ROW()/2)+1)

这些公式应该根据需要自动填充到工作表中(没有检查它正在查看的行是否已填充)

您可能想要研究 VBA 解决方案,因为如果您需要添加额外的列或者如果您可以同时拥有两个光学器件,它会更容易维护。

更新

重新阅读您的问题,并看到没有光学是一种选择,我的代码不会理解它并给您留下一些半填充的行。

您需要使用 VBA。

于 2013-04-08T00:56:11.423 回答