【问题标题】:MS Excel - Paste a formula from a tab-delimited lineMS Excel - 从制表符分隔的行粘贴公式
【发布时间】:2016-02-22 19:15:19
【问题描述】:

我有一个 Visual Studio 程序,它可以读取 PDF 文件并从中抓取数据。然后 VS 程序会生成一个以制表符分隔的字符串,手动将其粘贴到电子表格中。 一切正常,但我的制表符分隔线删除了一列中的公式。没什么大不了的,因为我只是从上一行复制公式。

是否可以将公式放入我的制表符分隔行中?

公式如下:

=IF(AND(NOT(ISBLANK($M2666)),ISBLANK($O2666)),"y","")

如果我将它放入适当列中的制表符分隔行,它可以正常工作,如果我碰巧在第 2666 行插入制表符分隔行。

我尝试使用row() 函数,但它不是一个有效的公式:

=IF(AND(NOT(ISBLANK($Mrow())),ISBLANK($Orow())),"y","")

我尝试了一个函数,它返回给定列中的最后一行,然后将变量放入公式中。如果我只是在 Excel 中粘贴,它可以工作,但是当我尝试将其插入到制表符分隔的行中时,它会粘贴为文本。

请记住,制表符分隔的字符串是在电子表格外部的程序中生成的,并且该程序无权访问电子表格来查找最后使用的行。

那么,问题来了,如何从剪贴板粘贴公式?

【问题讨论】:

  • ...,ISBLANK($Orow())),"y","")...$Orow() 错字吗?我认为您想要做的是 ISBLANK($O & row()) 而不是 Excel 不喜欢的 ISBLANK($Orow())
  • 您知道在创建要添加的字符串时要插入的行吗?

标签: excel vba


【解决方案1】:

这个问题被标记为,所以这是我基于 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

【讨论】:

  • 感谢您的回复 - 我将在今天晚些时候尝试这些建议。布鲁斯——不,不是错字,只是一个高级时刻。 Tim - 这就是问题所在,我在插入时知道该行。 VB 工作室程序生成该行并将其放入剪贴板,然后手动将其粘贴到电子表格中。我应该能够将其直接插入电子表格,但这超出了我的工资标准,并且会过度使用我的大脑。再次,非常感谢您的回复。
【解决方案2】:

您可以使用INDIRECTADDRESS... 以及ROWCOLUMN: 如果您需要了解,请搜索该功能的所有详细信息。

假设您想使用公式 INDIRECT(ADDRESS(ROW();COLUMN()-4))Q2666 获取 M2666 的值。回到示例问题,假设公式插入到Q2666,那么你的公式应该是:

=IF(AND(NOT(ISBLANK(INDIRECT(ADDRESS(ROW();COLUMN()-4))));ISBLANK(INDIRECT(ADDRESS(ROW();COLUMN()-2))));"y";"")

请注意,Excel 使用; 而不是, 来分隔函数中的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多