问题描述
我基本上想执行两列的加法运算并将结果存储在第三列中。
但是挑战是我不能使用列的单元格数来定位列。相反,我必须使用列名/标题,当我找到标题时,我必须在这些列的值之间执行加法运算,并存储结果列。
我必须使用第三列的名称,而不是位置。
解决方法
出于测试目的,我创建了一个如下所示的Excel:
现在,我为您创建了此工作流,该工作流正在处理第一和第二列的添加,而不管它们在哪一列中。
获取列很容易。困难的部分是确定目标列,正如您所说的那样,将来该列可能会切换该列,而不应该由列号来确定。
分步操作:
第1步:
因此,一开始您要读取Excel文件。将结果写入 DataTable DT1
。然后创建内容为result_index
的变量DT1.Columns.IndexOf("result (1+2)")
。
第2步:
现在变得越来越复杂。首先,我们遍历数据表DT1
。在这里,我们确定列的字母。这是由我们先前创建的result_index
变量完成的。然后在Switch
中,将该索引转换为字母。我认为这很简单:
- 2-> C
- 3-> D
- 依此类推...
现在有了该字母,我们可以使用它来填充result
列。因此,为了生成单元号,我们只需使用letter.ToString + row_index.ToString
。在我们的情况下,这代表“ D2”。而且,如果您查看Excel文件,您将看到这是结果数据的第一个单元格。
加法非常简单,因为它仅用(CInt(row("first")) + CInt(row("second"))).ToString
来汇总已知的列。
最后,当它运行时,您将找到该结果。
改进思路:
- 这不是一个完美的解决方案。一个巨大的改进就是不使用
Write Cell
活动。相反,您需要创建另一个数据表。填写结果数据。并将Write Cell
替换为Write Range
活动。
您将DataTable设置为输入。
这将加快行的填充速度,因此更快地填充了巨大的Excel文件。
- 您也可以将
Switch
替换为字符转换。您可以在this snippet上找到这个想法。