【问题标题】:Excel increment formula every 92 rowsExcel 每 92 行递增公式
【发布时间】:2014-12-16 23:52:09
【问题描述】:

我试图将 1 个库存表中的值连接到另一个。

每个项目有 92 个选项,14k 金、18k 金、戒指尺寸等。总共 92 个

该项目的每一行的值如下: =$M$4 =$N$4 =$O$4 ..等

这会将另一个工作表中的列值连接到第二个工作表。

我希望每 92 行最后一个数字“$4”增加 4:$4..$8..$12,而不更改字母。

我该怎么做?

我没有编程经验,任何帮助将不胜感激。

亲切的问候,

【问题讨论】:

  • 如果您没有编程经验,我建议您参加学习计划。
  • 我不清楚要求。您要填充的第一个单元格是哪个?我想这应该让你=M4 - 下一个单元格应该是什么,N4?
  • $M$4 来自另一个 excel 文件 allrings.xlsx 对于每组 M M M M N O O P P Q Q R R M M M N O O P P Q Q R R S S S T U U V V W W X X S S S S T U V V W W X X S S S T U V V W W X X Y Y Y Y Z AA

标签: excel vba formula increment


【解决方案1】:

这可以通过公式实现,无需 VBA。

如果在 A 列中,您想从 M4 中获取前 92 行的值,然后从 M8 中获取接下来的 92 行的值,然后从 M12 中获取接下来的 92 行的值,依此类推到 A 列。然后在 A1 中输入以下公式:

=INDIRECT("M"&4+((FLOOR(ROW(),92)/92)*4))

这有点难看,所以我会尝试分解它,从公式的内部到外部。

  1. Row() - 这将返回包含此公式的单元格的行。 A1 将返回“1”

  2. Floor(Row(), 92) - 这将为每行返回 92 的最小倍数。 A1 将返回 0,A92 将返回 92,A105 也将返回 92,因为它是 105 的 92 的最小倍数

  3. (FLOOR(ROW(),92)/92) - 这只是将 floor 的结果除以 92,因此 A1-A91 为 1,A92-A183 为 2,等等。

  4. ((FLOOR(ROW(),92)/92)*4) - 现在将其乘以 4,因为您有兴趣以 4 递增:单元格 M4M8 等。

  5. 4+((FLOOR(ROW(),92)/92)*4) - 将结果加四,因为您的第一个单元格是 M4

  6. =INDIRECT("M"&4+((FLOOR(ROW(),92)/92)*4)) - 间接采用像“M4”这样的文本值并使其成为单元格引用。 Excel 然后去获取单元格引用的值。对于 A1,我们在 Row() 上完成所有数学运算后,我们得到 "M" & 4M4=Indirect("M4") 然后从 M4 获取值。

因此,将该公式粘贴在 A1 中,然后将其复制到任意位置,它将每 92 行递增一次,从 M4、M8、M12、M16、...

【讨论】:

  • 对不起,我没有提到我想要它在第一个单元格为空的列中的 91 行。并且 $M$4 值来自单独的工作表“all-rings.xlsx”,我希望它从这个单独的工作表中获取值。
  • 在这种情况下,将 92 更改为 91。由于您从第二行开始,因此将 ROW() 更改为 ROW()-1。由于它位于不同的工作簿中,因此您必须更改 "M" 以引用工作簿、工作表和单元格,因此 "[all-rings.xlsx]Sheet1!M" 应该可以工作。
  • 另外,它不仅仅是 M 列,以下是列的顺序:MMMMNOOPQQRRMMMMNOOP PQQRRMMMMNOOPPQQRRSSS STUUVVWWXXSSSSTUUVVWW XXSSSSTUUVVWWXXYYYYZ AA AA AB AB AC AC AD AD - 对于 91 行 - 很抱歉没有更清楚前期
  • 你还能帮忙吗?如果您需要任何进一步的信息,请告诉我
猜你喜欢
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多