2016-07-11 11 views
0

クエリを使用してSQL Serverデータベースからデータが読み込まれるExcelスプレッドシートがあります。クエリが複雑であるが、これは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スプレッドシートの2番目の列には、SOME_EXCEL_FUNCTION(guid_4)の結果が表示されます。

ただし、それはありません。代わりに、テキスト=SOME_EXCEL_FUNCTION(A4)を表示します。

=で始まり、値ではなくSQLで返される文字列をExcelで処理して計算するにはどうすればよいですか?

(NB私は意図的hereを示唆したように、すなわち、私はSQLクエリ内のExcel機能を複製することはできません、これはthis one異なる問題であることを強調するために架空のExcelの機能SOME_EXCEL_FUNCTIONを選択しました。)

+0

私はそれをどのように適用するかを見ることができないSQL –

+0

からの式を用いて細胞にTextToColumnsを使用してみてください - あなたはさらに説明するだろうしてください – dumbledad

+0

データがExcelにロードされた後は、変更するマクロを実行することができますSQLからの数式でセルを処理します。私はあなたがSQLから正しいデータを取得するためにVBAを使用していると仮定? –

答えて

0

あなたが持ったらデータが読み込まれると、式としてテキストを再読み込みするためにExcelを取得する必要があります。

2つのオプションがあります:

  1. (べらぼうに長い)各セルを編集し、キーを押し、それが

  2. を再計算するために取得するために入力します(はるかに高速)はい=
    ため=を検索と置換は、それは同じ性質ですが、セルを変更することによって、セルの再評価が威力を発揮します。

データがどのように表示されるかに応じて、1回だけオフになることもあれば、データがリフレッシュされるたびに繰り返す必要があることもあります。

0

あなたは選択の変更に例えば、シート上で実行するための簡単なコードを使用することができます。

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

これは、あなたが式をエクセル、テキストからデータをフォーマットすることができます。データがSQLからロードされた後、シートのどこかをクリックするだけです。データをインポートする列に列番号を変更することを忘れないでください。

enter image description here

関連する問題