如果 TL;DR - 只需转到编辑...
我有一张带有表格的电子表格 - 该表格是两组不同(但相似)数据的比较。因此基本上有 3 列,第 3 列是结果列,公式如下:
=IF(ISBLANK([@[column_name]]),"",IF(COUNTIF([column_name2],[@[column_name]])>0,TRUE,FALSE))
我希望第四列能够保存结果列为 TRUE[@[column_name]]
时的内容[@[column_result]]
,但如果结果为 FALSE,则默认为空白,但以某种方式允许最终用户根据需要填充它[@[column_name]]
。或者当然,他们总是可以手动输入一些内容。
该电子表格将被重复使用,它更像是一个模板,因此数据和行数每次都会改变 - 这就是为什么它全部在表格中。
我曾考虑过是否可以动态生成一个下拉列表,如果结果为 TRUE,则默认为 colmn_name,如果结果为 FALSE,则默认为空白,但我不知道该怎么做。或者,如果结果为 false,则单元格中可能有一个按钮,单击后按钮会消失,并用 column_name 填充单元格...
附加信息:电子表格基本上是比较两个 SQL 表中的字段并突出显示差异(远不止 3-4 列,但为了回答这个问题,我将其简化了)。最终需要将表 A 中的数据映射到表 B,因此我使用 excel 编写和格式化大部分 SQL。有很多表和字段需要比较。
另外,如果这个问题很糟糕,我很抱歉...我知道它确实很糟糕,但我真的不知道如何最好地提出它。
编辑:
下面是我的电子表格的图片。如果 EH 列为真,则 M 列将 = A 列,换句话说:IF(colsE-H == TRUE) ColM = ColA; ELSE ColM = "";
如果 M 中没有值,则用户需要进行一些手动调查,如果一切正常(通常如此),则用户将 A 复制/粘贴到 M 中。我希望有一个下拉菜单或按钮或类似的东西,允许在单击(两次单击?)鼠标时将 A 列的值填充到 M 列中。
编辑2:那张照片缩小了很多。链接如下:截屏
答案1
即使有图片(顺便说一句,由于质量很好,我发现它比屏幕截图更有用),我仍然不太清楚。可能是您在寻找外连接(Excel 不提供此功能)。也不清楚为什么最后三行不是红色的,也不清楚黄色突出显示的意义。
然而,似乎有必要确定列名称未列入列名称2。
VLOOKUP 可以用于此目的:
=VLOOKUP(A18,I:I,1,FALSE)
如果没有的话,将会返回错误。
如果确实存在,则执行字段类型、最大长度和可空全部匹配?最简单的方法是“批量”执行此操作,但可以分成四个 TRUE/FALSE 列(如您所见)。批量添加一个额外的列会很有帮助(例如P
)。P18
根据需要复制下来:
=I18&","&J18&","&K18&","&L18
在ColumnO
每个 NGPROD列名称、字段类型、最大长度和可空然后可以在 中搜索ColumnF
“Col 不存在”,其中的情况是这样的:
=IF(ISERROR(VLOOKUP(A18,I:I,1,FALSE)),"Col doesn't exist",VLOOKUP(A18&","&B18&","&C18&","&D18,P18:P34,1,FALSE))
结果ColumnO
应为以下之一:
- 匹配的四个字段(逗号分隔)[我更喜欢全部匹配的地方只填“空白”,但我试图保持原帖的精神]
- Col 不存在 [如上所述]
N/A – 即列名称存在列名称2但一个或多个field_type1 / 最大长度1和可空1不匹配field_type2 / max_len2 / nullable2分别。
从上面来看,因为参考的是 NGPROD 数据库,所以可以根据需要ColumM
填充如下内容并复制下来:M18
=IF(ISNA(O18),"",IF(O18="Col doesn't exist","",A18))
然后M18:M34
可以根据列表进行验证A18:A35
。