0

我正在将一些 SQL 查询应用到电子表格中,并且无法最大限度地减少工作表/连接的数量。

我有 3 个场景,对于每个场景,我使用相同的查询

 select *
 from ***scenario_table***
 where mycolumn > 100

现在我必须为不同的“scenario_table”做三遍,我真的想用一个单元格作为参考(比如说单元格 $A$1)

我想这样

 select *
 from
     case when [$A$1] = 1 ***scenario1_table***
     case when [$A$1] = 2 ***scenario2_table***
     case when [$A$1] = 3 ***scenario3_table***
  where mycolumn > 100

我知道有没有办法解决?

谢谢

4

1 回答 1

1

此解决方案使用

假设您的单元格中包含内容Sheet1!A1并且您的工作簿中只有一个连接,请在以下位置插入以下代码Sheet1

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("A1")) Then
        Select Case Me.Range("A1").Value
            Case 1: SetTable ("Scenary1_Table")
            Case 2: SetTable ("Scenary2_Table")
            Case 3: SetTable ("Scenary3_Table")
        End Select
    End If
End Sub

Sub SetTable(ByVal TableName As String)
    With ThisWorkbook.Connections(1)
        .ODBCConnection.CommandText = "SELECT * FROM " & TableName
        .Refresh
    End With
End Sub
于 2013-10-03T14:14:00.303 回答