我有一个Visual Studio程序,它读取PDF文件并从中抓取数据。 VS程序然后生成制表符分隔的字符串,手动粘贴到电子表格中。 一切正常,但我的制表符分隔行删除了一列中的公式。没什么大不了的,因为我只是从上一行复制公式。
是否可以将公式放入制表符分隔的行?
这是公式:
=IF(AND(NOT(ISBLANK($M2666)),ISBLANK($O2666)),"y","")
如果我把它放在相应列中的制表符分隔的行中,它就可以正常工作,如果我碰巧在第2666行插入制表符分隔的行。
我尝试使用row()
功能,但它不是一个有效的公式:
=IF(AND(NOT(ISBLANK($Mrow())),ISBLANK($Orow())),"y","")
我尝试了一个函数,它返回给定列中的最后一行,然后创建一个变量以放入公式中。如果我只是在Excel中粘贴,它可以工作,但是当我尝试将它插入制表符分隔的行时,它会粘贴为文本。
请记住,制表符分隔的字符串是在电子表格外部的程序中生成的,程序无法访问电子表格以查找上次使用的行。
所以,问题是,如何从剪贴板中粘贴公式?
答案 0 :(得分:0)
您可以使用INDIRECT
和ADDRESS
...以及ROW
和COLUMN
:
如果您需要了解,请搜索该功能的每个细节。
假设您想要使用公式M2666
从Q2666
获取INDIRECT(ADDRESS(ROW();COLUMN()-4))
的值。回到示例问题,假设公式已插入Q2666
,那么您的公式应为:
=IF(AND(NOT(ISBLANK(INDIRECT(ADDRESS(ROW();COLUMN()-4))));ISBLANK(INDIRECT(ADDRESS(ROW();COLUMN()-2))));"y";"")
请注意,Excel使用;
而不是,
来分隔函数中的参数。
答案 1 :(得分:0)
此问题被标记为vba,因此这是我基于VBA的解决方案。
dim strFormula as string
strFormula = "=IF(AND(NOT(ISBLANK(RC13)),ISBLANK(RC15)),""y"","""")"
range("M2").formular1c1 = strFormula
range("M2666").formular1c1 = strFormula
range("M9999").formular1c1 = strFormula
Range.FormulaR1C1 property接受 xlR1C1 样式公式,该公式将针对您放入的任何行进行调整。
如果将xlR1C1样式公式放入制表符分隔的TXT文件中,则在使用VBA导入TXT文件之前和之后需要使用以下代码。
dim origRefStyle as long
origRefStyle = Application.ReferenceStyle
Application.ReferenceStyle = xlR1C1
'import the tab delimited TXT here
Application.ReferenceStyle = origRefStyle