【问题标题】:Use Table Header as Content In a Cell使用表格标题作为单元格中的内容
【发布时间】:2021-09-10 04:40:13
【问题描述】:

谁能帮我在另一个单元格中使用列标题作为逗号分隔的内容。我正在使用 Excel 2016。我有一个名为 StudentCourse 的表格,为了更好地说明,请参阅下面的示例布局:

[名称] [数学] [地理] [生物] [费用] [修复] Ram 非常差 好 好 未付 紧急:数学,费用 大坝中性好坏支付紧急:数学,生物 Rik 好 好 好 支付 OK:不紧急 Nik Good Good Good 部分紧急:费用

主题列的值来自下拉菜单,其中包含选项好、中性、差和非常差,如果值中性、差或非常差 被选中,则 Fixes 列将使用前缀 Urgent: 和列标题名称(Math、Geo 或 Fees)进行更新,具体取决于什么需要修复。如果不需要修复,则 Fixes 列的值为 Ok: Not Urgent。费用栏也遵循相同的概念。这意味着如果为费用列值选择了部分(表示部分支付)或未支付下拉选项,则费用将被添加到修复列中。因此,简而言之,Fixes 列是通过根据为其他列选择的值自动选择值来轻松排序需要特别指定的内容。

如果能提供任何帮助,我将不胜感激。

我还应该提到我是 Excel 新手。

【问题讨论】:

  • 这似乎是家庭作业。你已经尝试过什么?
  • 我尝试将 JOIN 和 MID 与 with 和/或运算符一起使用。我还可以选择多个下拉选项来工作,但过于重复。我实际上需要一些自动的东西。虽然这不是家庭作业。这是为了我正在做的一个项目。
  • 解释说:“如果从“费用”列下拉选项中选择“否”或“部分”,那么同样会添加到“修复”列中。”但是表格显示了不同的行为。请澄清。
  • @EEM 对此感到抱歉。我已经更新了原始问题,该部分现在显示为:如果为费用列值选择了部分或否下拉选项,则费用将添加到修复列中。因此,简而言之,Fixes 列用于通过根据为其他列选择的值自动选择值来轻松排序需要特别指定的内容。
  • 您是否还要调整表中的“修复”列以反映更新。

标签: excel if-statement conditional-statements multiple-conditions


【解决方案1】:

假设该表位于[A1:E9],并且 OP 确认没有 [BLANK] 单元格。在[F2]输入这个公式,复制到[F3:F9]

Excel 2016

= IF( SUMPRODUCT( ($B2:$E2<>{"Good","Good","Good","Paid"})*1 )=0, "Ok: Not Urgent",
 "Urgent: " & SUBSTITUTE(
 IF( $B2<>"Good", ", " & $B$1, "" )
 & IF( $C2<>"Good", ", " & $C$1, "" )
 & IF( $D2<>"Good", ", " & $D$1, "" )
 & IF( $E2<>"Paid", ", " & $E$1, "" ), ", ", "", 1 ) )

Excel 2019 (公式数组)

= IF( SUMPRODUCT( ($B2:$E2<>{"Good","Good","Good","Paid"})*1 )=0, "Ok: Not Urgent",
 "Urgent: " &
 TEXTJOIN( ", ", TRUE, IF( ($B2:$E2<>{"Good","Good","Good","Paid"}), $B$1:$E$1, TEXT(,) ) ) )

在输入FormulaArray的同时按住ctrl+shift+enter,公式将被包裹在@987654331中@ 和 } 如果输入正确。

【讨论】:

  • 你是个天才!这太直接了,很有帮助!!!我在 Excel 上观看了很多视频,您在文字和图像方面做得更好。这是非常清晰和直截了当的。太感谢了。不过有一件事,我知道你之前问过我这个问题,但我不明白,如果这些行是空白的,它会自动填充 Fixes 列,其中包含 主题和费用 的错误警报乙>。是否有解决方法,以便每当我输入新行时,我都不会在 Fixes 列中收到错误的修复消息。我会选择你的答案,但你能帮我吗?
  • 我正在玩弄代码,我意识到如果我在中间插入一列,它会破坏代码。我如何编写代码来说明只有这些列 Math、Geo、Bio 和 Fees 应该用于决定 FIxes 列的内容?任何帮助都将不胜感激。
  • 在我的实际工作表上,我有其他值,如 Excellent、Satisfactory,如 Good 不会在 Fixes 列。我对此感到非常抱歉。我认为一旦我有了代码,我就可以修改它来填充其余部分,但 Excel 与 PHP 和 Javascript 有很大不同。但我仍在努力学习它,非常感谢任何帮助!再次感谢您。
  • 我只是想让你知道我实际上是在阅读和尝试。到目前为止,这是我在不同范围内进行选择的尝试。这似乎合乎逻辑,但它不起作用: = IF( SUMPRODUCT( ($B2:$B2,$D2:$D2{"Good","Good"})*1 )=0, "Ok: Not Urgent" , "Urgent: " &amp; SUBSTITUTE( IF( $B2:$B2&lt;&gt;"Good", ", " &amp; $B$1, "" ) &amp; IF( $D2:$D2&lt;&gt;"Good", ", " &amp; $D$1, "" ), ", ", "", 1 ) )
【解决方案2】:

如果您在 H:I 列中列出可接受的数据(如下例所示)。你可以使用: =IF(TEXTJOIN(", ",1,IF(INDEX($I$1:$I$4,MATCH($B$1:$E$1,$H$1:$H$4,0))=B2:E2,"",$B$1:$E$1))="","OK: No urgent","Urgent: "&amp;TEXTJOIN(", ",1,IF(INDEX($I$1:$I$4,MATCH($B$1:$E$1,$H$1:$H$4,0))=B2:E2,"",$B$1:$E$1)))

【讨论】:

  • 非常感谢您的回答,但是我已经充实的表格结构不能很好地工作。但这对我来说是一次很棒的学习经历,我会保存这段代码。
  • 我在 Stackoverflow 上发现了这个问题:link,这与我的尝试很接近。唯一的问题是,当我测试它时,我不知道如何修改代码以添加前缀:Urgent:... 和 OK: Not Urgent 到修复列。你能帮我修改一下吗?此外,我正在学习 Excel,如果可能的话,我欢迎任何其他采用更简单方法的解决方案。谢谢!
  • 我正在测试您的代码,因为我想尽可能多地学习,但是修复列却被填满:#NAME?我复制了您的确切表结构,所以我不确定出了什么问题。我正在使用 Excel 2016
  • 您的 Excel 可能不支持 TEXTJOIN。
  • 好的,我明白了。不过,感谢您的所有帮助。我仍然喜欢玩你的代码:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
相关资源
最近更新 更多