我有一个包含表格的文件(我们称之为OVERLORD.xlsm)。在子文件夹中,我有一些名为(OVERLORD-north.xlsm,OVERLORD-east.xlsm)等文件,它们都使用数据连接来获取存储在OVERLORD.xlsm中的表。
在每个子文件中,例如OVERLORD-north,我希望能够输入一些即使我更新表的数据连接也会持久的信息。
假设OVERLORD.xlsm中包含以下内容(col A包含我用作索引的静态自动编号):
Col A - Col B - Col C
1 2
这些内容将回显到OVERLORD-north,但如果我在col C中输入内容(从OVERLORD-North中输入),则下次刷新原始文件中的信息时会覆盖此信息。
我可以阻止这个吗?
我可以以某种方式锁定列以防止其内容被覆盖,即使它们是表的一部分吗?或者我可以选择从数据刷新查询中省略某些列吗?从字面上看,任何允许我为外部获取的表中的给定单元格或列创建持久性的解决方案都会引起人们的兴趣。
是的,列必须是表的一部分,否则它们不能用索引键排序,这是先决条件。我也无法将所有信息保存在一个文件中,如果可能的话,几个月之前就是我的选择。
我有一个解决方法,但它会破坏资源的有效性......所以我会感谢锁定列的任何输入,或者如果不可能的话,提出改善列的稳定性和速度的建议 - 保存阵列机。
Sub rewriteStatus()
' Loop through array, match index number between array and sheet, and write to corresponding cell(s) into the table.
End Sub
Sub preserveStatus()
Dim statusArray() As String, emptyRow As Boolean
ReDim Preserve statusArray(1 To 4, 1 To 2)
emptyRow = True
For i = 2 To ListObject("PUSH_table").Count
If Cells(i, 14) <> "" Then
statusArray(i, 2) = Cells(i, 14).Value
emptyRow = False
End If
If Cells(i, 15) <> "" Then
statusArray(i, 3) = Cells(i, 15).Value
emptyRow = False
End If
If Cells(i, 17) <> "" Then
statusArray(i, 4) = Cells(i, 17).Value
emptyRow = False
End If
' ReDim array if any cell of that row was found to be non-empty
' and copy the index key for that row
If emptyRow = False Then
ReDim Preserve statusArray(1 To 2, 1 To UBound(statusArray, 2) + 1)
statusArray(i, 1) = Cells(i, 1).Value
End If
Next i
End Sub