【问题标题】:Is there a way to drag formula down but changing the column有没有办法将公式向下拖动但更改列
【发布时间】:2020-10-24 17:22:52
【问题描述】:

我正在尝试做一个总结,列出所有匹配项并对表格进行转置。我写了一个成功的公式。但是,我遇到了另一个问题,我发现我的公式不能被下拉并应用于所有行。谁能帮助我改进我的配方?

来源:

总结:

我想将“我的摘要”中的行向下拖动,公式可以自动执行列+1。感谢您的帮助。

这是我的公式: =IFERROR(INDEX(Sheet1!$F$9:$F$16, SMALL(IF(Sheet1!$H$9:$H$16="X",ROW(Sheet1!$H$9:$H$16)-ROW(Sheet1! H$9)+1),COLUMN(A1))),"")

【问题讨论】:

  • 阅读以下文章,您将了解如何使用间接和地址函数来实现您所需要的ablebits.com/office-addins-blog/2015/02/10/…
  • @AtanasAtanasov Indirect() 易变,应避免使用。无论如何,它很少需要。 Index() 可以更有效地完成这项工作。
  • 请将您的公式发布为文本,而不是屏幕截图,这样人们就不必输入它来进行更改。
  • 对不起,我刚刚发布了我的公式

标签: excel excel-formula


【解决方案1】:

在您的屏幕截图中,很难分辨数据位于哪一行。以下公式已输入到 Sheet2 的单元格 B2 中并复制下来。

=IFERROR(TRANSPOSE(FILTER(Sheet1!$F$9:$F$16,INDEX(Sheet1!$H$9:$K$16,1,ROW(A1)):INDEX(Sheet1!$H$9:$K$16,8,ROW(A1))="x")),"")

源截图Sheet1

结果截图表 2

此方法使用 Excel 的动态数组功能,该功能仅适用于 Office 365 的 Excel 许可证。公式仅在第 2 列中。它会根据需要自动将其结果溢出到相邻列中。

评论后编辑

如果您没有 Office 365,则可以使用公式的变体,其中索引被替换为 Index():Index() 技术。第一个 Index 拉出第一行,第二个 Index 拉出最后一行,将两个结果与范围运算符 : 组合在一起,将两个结果组合成一个范围。

=IFERROR(INDEX(Sheet1!$F$9:$F$16,
SMALL(IF(INDEX(Sheet1!$H$9:$K$16,1,ROW(A1)):
INDEX(Sheet1!$H$9:$K$16,8,ROW(A1))="X",
ROW($A$9:$A$16)-ROW(A$9)+1),COLUMN(A1))),"")

从第一个结果单元格(我的屏幕截图中的 B2)开始并使用 Ctrl+Shift+Enter 确认,因为它是一个数组公式。然后上下复制。

注意:截图结果不同,因为我从头开始重新创建示例并且源数据不同。

【讨论】:

  • 感谢您的快速回复 teylyn。我已经检查了我的 Microsoft Office 版本,它仍然在 2016 年。我可以知道是否有其他替代方法可以做到这一点?干杯!
  • 我在答案中添加了一个适用于 Excel 2016 的公式。
  • 太棒了,我从没想过 index:index 技术。非常感谢泰林!你完美地解决了我的问题!
猜你喜欢
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多