ODBC连接MySQL的Sheet1数据动态同步至Sheet2的需求
实现Sheet2自动同步Sheet1的动态数据(ODBC刷新后自动更新)
给你几个实用的方案,都能解决Sheet1行数变化后Sheet2自动同步的问题:
方案1:用Excel表(Table)实现自动同步
这是最省心的方法,不需要写复杂公式:
- 选中Sheet1里所有带数据的区域(包含表头),按
Ctrl+T弹出创建表窗口,勾选「表包含标题」后确认 - 切到Sheet2,选中要放数据的起始单元格(比如A1),输入公式
=Sheet1[#All],回车后就会自动同步Sheet1的整个表内容。后续Sheet1刷新ODBC数据导致行数增减时,Sheet2的内容会自动跟着扩展或收缩
方案2:动态数组公式(仅适用于Excel 365/2021及以上版本)
如果你的Excel支持动态数组,直接用溢出公式就能搞定:
- 在Sheet2的A1单元格输入公式
=Sheet1!A:Z(把A:Z换成你实际用到的列范围,比如A:D),回车后公式会自动填充所有行和列 - 要是想过滤掉Sheet1里的空行,改成
=FILTER(Sheet1!A:Z,Sheet1!A:A<>"")就行,这样只会同步有数据的行
方案3:VBA宏自动同步(适合需要自定义控制的场景)
如果前面的方法满足不了需求,用VBA可以实现更灵活的同步:
- 按
Alt+F11打开VBA编辑器 - 在左侧的工程窗口里找到当前工作簿,右键点击选择「插入」→「模块」,粘贴下面的代码:
Sub SyncSheet1ToSheet2() Dim srcSheet As Worksheet Dim destSheet As Worksheet Dim srcRange As Range Set srcSheet = ThisWorkbook.Sheets("Sheet1") Set destSheet = ThisWorkbook.Sheets("Sheet2") ' 清空Sheet2原有数据 destSheet.Cells.Clear ' 获取Sheet1的已使用数据区域 Set srcRange = srcSheet.UsedRange ' 复制数据到Sheet2起始位置 srcRange.Copy destSheet.Range("A1") End Sub
- 要是想让Sheet1刷新ODBC后自动同步,还能设置触发:
- 在工程窗口里双击「Sheet1」,打开Sheet1的代码窗口,粘贴下面的代码:
Private Sub Worksheet_Change(ByVal Target As Range) SyncSheet1ToSheet2 End Sub- 或者在ODBC连接的属性设置里,找到「刷新后运行宏」选项,选择刚才创建的
SyncSheet1ToSheet2宏即可
内容的提问来源于stack exchange,提问作者arun
相关产品推荐
相关产品推荐

