我使用的是Excel 2013,我有一张从SQL Server 2012获取数据的工作表。
查询有4个参数,并从单元格中获取它们的值。当单元格值更改时,将选中该框以自动刷新。我想避免使用VBA。
当参数引用的单元格中的正确值时,将返回数据。
问题在于日期的单元格。在另一个单元格中,我创建了一个公式,用于检查日期是否有效,如果有效,则将输入的值格式化为YYYY-MM-DD
否则格式化今天的日期。在第一次更改时,数据会更新,但在后续更改中,数据不会更新。具有公式的单元格用作参数的值。
答案 0 :(得分:0)
问题似乎是用于查询参数的单元格只能包含数据或简单函数,没有嵌套函数,以便识别更改事件。 就我而言:Cell I4使用= TEXT(F4,“yyyy-mm-dd”)格式化用户输入的开始日期。如果它是一个日期,它将转换为文本,因为SQL需要它,否则它与输入相同。单元格J4包含当前第一天的函数= TEXT(TODAY() - DAY(TODAY())+ 1,“yyyy-mm-dd”)。用于参数的单元格是H4,它包含= IF(F4 = I4,J4,I4)。 下一行(5)类似于测试结束日期,J5提供月末日期:= TEXT(EOMONTH(TODAY(),0),“yyyy-mm-dd”)。然后结束日期的参数单元格包含= IF(F5 = I5,J5,I5)。 我的下一步是将查询带到存储过程以获得更好的输入验证。由于excel似乎只允许存储过程的1个参数(除非使用ODBC),我将不得不连接输入是这样的单元格:= TRIM(CONCATENATE(H2,“■”,F3,“■”,H4,“ ■“,H5))。然后在SP中拆分条件。希望这有助于某人。