在Excel365中选择一系列不连续的单元格

问题描述 投票:0回答:1

我想在 MS Excel365 中生成太阳风冲击值的折线图

我尝试手动选择 603 个冲击数据库记录的冲击编号 (sn),使它们保持选中状态,同时我还从 [copied_pasted_IDE_Py_Interpreter_output.xlsm] 选择太阳风等离子体和 IMF 的相应上游和下游值。 https://1drv.ms/f/s!AvbRThajlgqAlVW5kEb3zV3dcagc?e=6Z25iU

我更喜欢自动移动应位于“sn”下方的值,例如从单元格 C111 移动到单元格 A111。

我尝试在选择第一个冲击编号 (sn) 后按住 Ctrl 键,同时滚动到下一个冲击编号。

我还尝试录制宏。我希望之前选择的单元格保持选中状态。

excel vba
1个回答
0
投票

看来您需要做的是将数据重新格式化为更可用的格式?

您可以使用 VBA 来做到这一点 - 例如:

Sub Tabulate()
    Dim wb As Workbook
    Dim wsData As Worksheet, c As Range, rngOut As Range, lastRow As Long
    
    Set wb = ThisWorkbook
    Set wsData = wb.Worksheets("Data") 'your source data
    Set c = wsData.Range("A1")
    lastRow = wsData.Cells(Rows.Count, "A").End(xlUp).Row
    
    Set rngOut = wb.Worksheets("Results").Range("A2") 'table starts here
    
    Do While c.Row <= lastRow
        If c.Value = "sn" Then 'checking for "sn"
            'extract and write out a set of values from this block
            rngOut.Resize(1, 5) = Array(c.Offset(1, 0).Value, _
                 c.Offset(11, 1).Value, c.Offset(11, 2).Value, _
                 c.Offset(12, 1).Value, c.Offset(12, 2).Value)
            Set rngOut = rngOut.Offset(1)
        End If
        Set c = c.Offset(1)
    Loop
End Sub

这假设您的源数据布局一致,每个块内的间距没有变化。

© www.soinside.com 2019 - 2024. All rights reserved.