2016-07-11 33 views
0

我有一個Excel電子表格,其數據使用查詢從SQL Server數據庫加載。該查詢是複雜的,但是這是一個simplicifation:從Excel中使用的SQL查詢返回Excel表達式

SELECT 
    Collections.id AS collectionId, 
    '=SOME_EXCEL_FUNCTION(A' + CAST(ROW_NUMBER() OVER(ORDER BY pagingId DESC) AS VARCHAR) + ')' AS computedResult 
FROM Collections 

查詢將隨後返回行是這樣的:

guid_1,= SOME_EXCEL_FUNCTION(A1)
guid_2,= SOME_EXCEL_FUNCTION(A2)
guid_3,= SOME_EXCEL_FUNCTION(A3)
guid_4,= SOME_EXCEL_FUNCTION(A4)
...

它做什麼。

然後,我希望excel顯示的值是在指定列上運行函數SOME_EXCEL_FUNCTION的結果,例如,對於第四行,Excel電子表格中的第二列應該顯示從SOME_EXCEL_FUNCTION(guid_4)

產生的值。但事實並非如此。相反,它顯示文本=SOME_EXCEL_FUNCTION(A4)

如何讓Excel將Excel返回的字符串視爲表達式而不是值,然後計算它們?

(注:我特意選擇了一個虛構的Excel函數SOME_EXCEL_FUNCTION突出,這是從this one一個不同的問題,即我不能在SQL查詢中複製Excel函數的建議here。)

+0

嘗試使用與來自SQL –

+0

公式單元格TextToColumns我看不出如何應用 - 你會進一步解釋,請 – dumbledad

+0

將數據加載到Excel中後,你可以運行一個宏來改變具有來自SQL的公式的細胞。我假設你正在使用VBA從SQL獲取數據是否正確? –

回答

0

一旦你的數據加載後,您將不得不重新讀取文本作爲公式。

有2個選項:

  1. (荒謬長)編輯每個單元格,然後按回車鍵讓它重新計算

  2. (更快)搜索和替換==
    是,它是相同的字符,但通過改變單元格,它強制excel重新評估單元格

根據數據的顯示方式,它可能是一次性的,或者每次刷新數據時都需要重複。

0

你可以使用一個簡單的代碼來執行的片,例如選擇更改:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    On Error Resume Next 
    Columns(3).TextToColumns 
    On Error GoTo 0 
End Sub 

這將允許您從文本格式的數據,以Excel公式。從SQL中加載數據後,只需在表單上的某處單擊即可。請記住將列號更改爲數據導入的列。

enter image description here