gpt4 book ai didi

excel - 如何创建一个列出包含 "yes"的先前字段的标题的字段?

转载 作者:行者123 更新时间:2023-12-04 21:22:52 26 4
gpt4 key购买 nike

我有一个以下格式的excel表格:

╔════════╦════════╦════════╦════════╦═════════╗
║ Field1 ║ Field2 ║ Field3 ║ ... ║ Field10 ║
╠════════╬════════╬════════╬════════╬═════════╣
║ no ║ no ║ no ║ ... ║ no ║
║ no ║ yes ║ no ║ ... ║ no ║
║ yes ║ yes ║ yes ║ ... ║ yes ║
║ yes ║ yes ║ no ║ ... ║ yes ║
║ . ║ . ║ . ║ ... ║ . ║
║ . ║ . ║ . ║ ... ║ . ║
║ . ║ . ║ . ║ ... ║ . ║
╚════════╩════════╩════════╩════════╩═════════╝

如您所见,每个字段都可以包含是和否的任意组合

我正在尝试创建一个基于先前显示的数据格式的单个字段。该字段将包含包含"is"的字段的名称。如果多个字段中存在"is",则应列出以逗号分隔的那些字段。

以下是所需字段的示例:
╔════════╦════════╦════════╦════════╦═════════╦══════════════════════════╗
║ Field1 ║ Field2 ║ Field3 ║ ... ║ Field10 ║ NewField ║
╠════════╬════════╬════════╬════════╬═════════╬══════════════════════════╣
║ no ║ no ║ no ║ ... ║ no ║ ║
║ no ║ yes ║ no ║ ... ║ no ║ Field2 ║
║ yes ║ yes ║ yes ║ ... ║ yes ║ Field1, ..., Field10 ║
║ yes ║ yes ║ no ║ ... ║ yes ║ Field1, Field2, Field10 ║
║ . ║ . ║ . ║ ... ║ . ║ ... ║
║ . ║ . ║ . ║ ... ║ . ║ ... ║
║ . ║ . ║ . ║ ... ║ . ║ ... ║
╚════════╩════════╩════════╩════════╩═════════╩══════════════════════════╝

我正在尝试使用 excel 公式来实现这一点,但到目前为止,对我来说唯一明显的解决方案是在 excel 公式中包含所有可能的排列。当然,创建和进行更改是低效且耗时的。有什么方法可以有效地达到这个结果吗?

最佳答案

如果您没有 Office 365 Excel,那么这里有一个自定义 UDF 可以满足您的需求:

Function JoinField(ttl As Range, srchrng As Range, crit As Variant, Optional sep As String = ",") As String
Dim ttlArr() As Variant
Dim srchrngArr() As Variant
Dim i&,j&
ttlArr = ttl.Value
srchrngArr = srchrng.Value

If UBound(ttlArr, 1) <> UBound(srchrngArr, 1) Or UBound(ttlArr, 2) <> UBound(srchrngArr, 2) Then Exit Function

For i = LBound(ttlArr, 1) To UBound(ttlArr, 1)
For j = LBound(ttlArr, 2) To UBound(ttlArr, 2)
If srchrngArr(i, j) = crit Then
JoinField = JoinField & ttlArr(i, j) & sep
End If
Next j
Next i

JoinField = Left(JoinField, Len(JoinField) - Len(sep))


End Function

将其放入附加到工作簿的模块中。 不要将其放在工作表代码或 ThisWorkbook 代码中。

然后像普通函数一样调用它:
=JoinField($A$1:$J$1,$A2:$J2,"Yes",",")

第一个条件是要连接的名称。第二个是具有条件的范围。第三个是要查找的标准。第四个是可选的分隔符。默认为 , .

enter image description here

如果您拥有最新的 Office 365 Excel,则可以将此公式用作数组。
=TEXTJOIN(",",TRUE,IF($A2:$J2 = "Yes", $A$1:$J$1,""))

作为一个数组,当退出编辑模式而不是 Enter 时,需要使用 Ctrl-Shift-Enter 确认。如果操作正确,Excel 将输入 {}围绕公式。

关于excel - 如何创建一个列出包含 "yes"的先前字段的标题的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com