我用Power Query调用图灵机器人api做了一个机器人,很有意思,大家可以先下载附件体验下。
只要输入问题,机器人便会回答你,像小黄鸡一样。
至于怎么做的先不管,这不是本文的主题。但在使用的过程中很容易发现一个不太方便的地方:每输入一次问题,需要手动点击刷新才能看到机器人的回复,而不会自动变化。
在实际工作中我们也经常会有这种需求,希望用Power Query或Power Pivot做出来的表格,能够当某个单元格的值变化时,自动刷新一次,那么可以用VBA来完成。
在工作表的Change事件中,Target表示更改的单元格,使用Address属性可以获取到更改单元格的位置,类型为文本。
比如当你更改了A1单元格的值,Target.Address
便返回"$A$1"。
所以逻辑很简单,我们输入问题的单元格为B4,如果返回的值="$B$4",那么就执行刷新,否则不刷新。
Alt+F11打开VBE,在需要自动刷新的sheet中写入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$4" Then ActiveWorkbook.RefreshAll End If End Sub
除了Address属性,还可以使用Column和Row属性,获取到更改单元格的行和列,把触发条件限定在某个范围内,比如Target.Column < 5 And Target.Row < 4
,那么在A1:D3范围内的任意一个单元格值被修改都会触发。
上面用的是ActiveWorkbook.RefreshAll
,表示数据选项卡下的全部刷新,如果不要全部刷新而是刷新某一个表,那么可以改成:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$4" Then Range("自动刷新").ListObject.QueryTable.Refresh End If End Sub
把Range中的表名换成要刷新的表名即可。
6个6
已献上膝盖,哈哈哈
我能说我玩了一天吗?
可以,优秀
6666666666
PQ 跟Excel VBA 函数结合真是很多有趣的
当前请求次数已用完
可以不打开Excel,实现power query的自动刷新么? 最好还能联动发邮件
用Power BI就好了
玩不动啊 提示exception of type 'Microsoft.Mashup.Engine.Interface.ResourceAccessForbiddenException' was thrown.