宏输入' 1'在新列中,如果行匹配唯一ID并包含列标题的文本

时间:2017-04-05 11:20:52

标签: excel vba excel-vba

如果有人能帮我制定电子表格,我将非常感激。我有一个简单的电子表格,第1列每行有多个重复的ID,所有在第2列都包含一种诊断 - 每个患者可能有1到20种不同的变化。

(抱歉,我不允许发布图片)

第1页

c_ID | Diagnosis
-----| ---------
1    | a
1    | c
2    | a
3    | a
3    | s
4    | h
4    | g
4    | f

我想这样做,以便每个患者只有一行,所以我创建了一个新表,每个患者ID只有一次,然后是每个诊断的列标题。

第2页

c_ID | a | b | c | d | e ... | s

在每一行中,我想返回一个' 1'患者ID匹配且该患者ID的指定诊断之一与列标题匹配,并且' 0'它没有。

即。我想在Sheet 2中写一些内容:如果Sheet 2中第1列中的c_ID与Sheet 1中第1列中的c_ID匹配,那么对于该c_ID搜索表1第2列,以查看该c_ID的任何数据是否与任何数据相匹配列表2中的列标题列2-21,如果是,则返回1,如果没有则返回0。

我没有编写宏或VBA的经验,但我想知道是否可以这样做?我会非常感谢任何帮助,或建议更好地解决这个问题。

1 个答案:

答案 0 :(得分:0)

您还可以使用返回1或0的vlookup,具体取决于值是否存在: = IF(IFERROR(VLOOKUP(A1,$ A $ 2:$ B $ 20,1,FALSE),0)> 0,1,0)

如果列中包含所有唯一的c_ID值(例如A1),则将上面的公式复制到B2列中。您需要更改代码以引用您正在执行的值的范围;所以$ A $ 2:$ B $ 20需要替换为原始数据集所涵盖的所有这些值(确保保留美元符号)在工作表1上。

另一种选择是用命名范围替换$ A $ 2:$ B $ 20。您可以阅读有关在线创建简单范围的信息,这很容易。一旦你命名了范围,你就可以用你的名字替换$ A $ 2:$ B $ 20,公式应该有效。

希望这会有所帮助:)