É possível utilizar o Excel para retornar resultados através de uma select.
No exemplo seguinte, iremos utilizar o banco de dados de exemplo AdventureWorks2008R2, que pode ser encontrado facilmente na internet.
No SSMS, executaremos a seguinte select (simples)
SELECT W.WorkOrderID, P.Name, W.OrderQty, P.StandardCost, W.OrderQty * P.StandardCost as SubTotal FROM Production.WorkOrder W INNER JOIN Production.Product P ON W.ProductID = P.ProductID
O resultado da consulta será o seguinte:
No Excel 2013 ou 2016, abra uma nova planilha, clique no menu Dados, De Outas Fontes, Do SQL Server
Preencha corretamente os dados de conexao, conforme o assistente de conexão pede:
Escolha do banco de dados AdventureWorks2008R2, tire a marcação de “Conectar a uma tabela específica”, e clique em [avançar]
Caso queira, altere o nome do arquivo de conexão, descricao e nome amigãvel, e clique em [Concluir]
Temporariamente, escolha uma visão a ser selecionada e clique em [OK]
Clique na opcao Proriedades, para que o Excel abra as Propriedades da Conxão.
Nas propriedades da Conexão, na aba Uso, é possível configurar por exemplo, a cada X minutos que irá ser atualizada.
Na aba Definição, altere o tipo de comando para SQL, e o Texto de comando, substitua para a Select que foi desenvolvida:
Clique em [OK] para finalizar.
A mensagem seguinte poderá ser exibida. CLique em [Sim]
O Excel voltará para a tela de inportar dados. Selecione a celula =$A$1
Dessa forma, temos os dados exibidos em planilha, a qual estes são atualizados dinamicamente, de tempos em tempos conforme configuração da conexão ou clicando sobre o botão Atualizar.
O ideal é fazer a criação de uma View dentro do SQL Server e fazer com que o usário tenha acesso m´nimo de permissão, não deixando que usuários comuns tenham acesso a qualquer outro tipo de objeto (a não ser a view cirada)
Após importado os dados, é possível criar as formulas normalmente do Excel.