如何将Excel中的动态(结构化)引用转换为固定单元格值?

0lvr5msh  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(159)

我正在从一个单独的文件中将一个表加载到一个excel文件中-我想从这个导入表中创建只由特定列定义的“子表”。因此,我使用动态引用来查看不同工作表上的这些表的一部分,我想在一个步骤中完成的工作是将结构化引用中的值固定在它们各自的单元格中。有没有解决方案?还是使用完全不同的方法更好?
带有表SAMPLE的示例表-我想分别修复列G、H和J、K、L中的引用值,并将它们转换为两个表

其中一个解决方案是用宏复制和粘贴作为一个数字的参考,但它不是很好,自动化的过程不是很顺利。我也尝试了这个解决方案How do you convert a structured reference in excel to a range?,但它不为我工作
编辑:根据@Ike的回应,我正在附加目前的VBA程式码,该程式码会将指定的范围复制并贴上至新的工作表,然后我可以在其中建立表格。但我想这样做,但不需要复制贴上程序...

Sub Macro1()
    Range("Sample_range").Copy
    Set NewBook = Worksheets.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks_     :=False, Transpose:=False 
    End Sub
6psbrbz9

6psbrbz91#

你的代码确实不太好。
试试这个

Sub convertSpilledRangeToTable(c As Range)

If c.HasSpill Then
    Dim rg As Range
    Set rg = c.cells(1,1).SpillParent.SpillingToRange
    
    rg.Value = rg.Value   'this turns the formula into values
    
    Dim ws As Worksheet: Set ws = rg.Parent
    ws.ListObjects.Add xlSrcRange, rg, , xlYes
End If

End Sub

您可以测试它,例如convertSpilledRangeToTable Range("Sample_range"),我假设屏幕截图中的“Sample_Range”为G1。
或者,如果您已经通过代码创建了子表,则将其包含在其中。

相关问题