作为查询的结果,如何生成常规的Excel公式?

我有一个庞大而复杂的Excel查询,按需要工作。

但是,我正在实现一些实时数据validationfunction(即不需要数据刷新),而且我需要在查询结果的其中一列中定期使用Excel公式。

此公式将使用工作簿中的其他工作表进行实时数据比较,故意独立于查询本身。

我可以添加没有值的自定义列吗?
我假设值null""将覆盖任何预先存在的数据,所以我不能只在运行查询后inputexcel公式到结果表(该公式不会刷新刷新之间)。

为了testing,我尝试添加一个值为"=5+2"的自定义列,以查看它的行为。

 let Source = Excel.CurrentWorkbook(){[Name="tblInvoicesCategorized"]}[Content], /* ... perform numerous query actions ... */ // Use "=5+2" as a test formula #"Added Custom13" = Table.AddColumn(#"Added Custom12", "Stale Data", each "=5+2"), /* ... perform numerous query actions ... */ in #"Changed Type" 

查询确实输出公式作为列中单元格的值,但Excel不会自动执行公式。
我仍然不得不手动将光标放到一个单元格中,然后按回车键,让它执行公式。

在这里输入图像说明

公式的手动input,甚至是手动执行一个macros,对于这个工作簿来说是不可取的。

有没有办法让我在这个查询列有一个常规的公式,并让它自动持续在数据刷新之间?

  #"Added Custom13" = Table.AddColumn(#"Added Custom12", "Stale Data", each "=5+2"), 

这不是你期望的方式,因为你正在返回一个string文字:“= 5 + 2”

这个=是隐含的,引号是没有必要的

  #"Added Custom13" = Table.AddColumn(#"Added Custom12", "Stale Data", each 5+2), 

这将返回7而不需要手动刷新。 但是,您仅限于Power Query公式,它具有与标准Excel公式不同的函数集。

https://msdn.microsoft.com/library/1ed840b1-7e20-4419-ad2f-d82054c9b2ab

这可以使您的工作表中的数据访问繁琐,但这是可能的。 一些提示可以在这里find:

如何在Power Query中引用单元格的值

一个解决方法是通过一些VBA代码来触发对单元格更改的重新…

这是我的情况,希望它可以帮助…

 Private Sub Worksheet_Change(ByVal Target As Range) ' ' Dim lTest As Long, cn As WorkbookConnection ' On Error Resume Next ' For Each cn In ThisWorkbook.Connections ' lTest = InStr(1, cn.OLEDBConnection.Connection, "Provider=Microsoft.Mashup.OleDb.1", vbTextCompare) ' If Err.Number <> 0 Then ' Err.Clear ' Exit For ' End If ' If lTest > 0 Then cn.Refresh ' Next cn If Intersect(Target, Me.Range("datachange")) Is Nothing Then Exit Sub Application.EnableEvents = False 'to prevent endless loop 'Application.Goto Reference:="Tum_Santiyelerin_Satinalinan_Malzemeleri" Range("Tum_Santiyelerin_Satinalinan_Malzemeleri").ListObject.QueryTable.Refresh BackgroundQuery:=False 'Application.Goto Reference:="Filtre" 'Range("Filtre").ListObject.QueryTable.Refresh BackgroundQuery:=False 'Application.Goto Reference:="Filtre_Malzeme" Range("Filtre_Malzeme").ListObject.QueryTable.Refresh BackgroundQuery:=False 'Application.Goto Reference:="Filtre_Proje" Range("Filtre_Proje").ListObject.QueryTable.Refresh BackgroundQuery:=False 'Application.Goto Reference:="Filtre_Firma" Range("Filtre_Firma").ListObject.QueryTable.Refresh BackgroundQuery:=False Application.Goto Reference:="Tum_Santiyelerin_Satinalinan_Malzemeleri" ActiveWorkbook.RefreshAll Application.EnableEvents = True 

您不能输出将直接调用Excel公式的列。 您可以在工作表中使用不同的列来调用Excel公式,并从Power Query输出的表中引用单元格。 当Power Query表被刷新时,这个单元格将刷新。