反转表格(不是转置)

反转表格(不是转置)

我正在为一个分子病理学项目进行组织微阵列 (TMA) 图像分析。TMA 是包含大量小图像的幻灯片,扫描幻灯片后需要将其与唯一 ID 的地图进行匹配。

有时幻灯片会旋转,因此我需要一种翻转 Excel 表格的方法,但如果有意义的话,则不要转置。

例如

从:

在此处输入图片描述

到:

在此处输入图片描述

任何帮助将非常感激

答案1

我通常更喜欢用没有宏的方式来解决问题,但是现在我找不到没有宏的简单解决方案。

下面的宏反转选定的矩阵并将其写回原始位置或新的工作表。

运行宏:

  • 按 Alt+F11 打开 Visual Basic 编辑器
  • 将代码粘贴到模块中(插入 - 模块)
    • 注意:添加代码后,如果您想保留宏,则需要将工作簿保存为启用宏的工作簿(如果将来不需要它,那么保留为 .xlsx 也可以)
  • 保留您需要的选项(覆盖原始数据或创建新工作表)并删除其他
  • 选择需要反转的整个表格
  • 转到“查看” - “宏” - “查看宏” - 选择宏(InvertTable)并按运行

Option Explicit

Sub InvertTable()
    Dim originalData As Variant
    Dim nRows As Integer
    Dim nColumns As Integer
    Dim newData As Variant
    Dim x As Integer
    Dim y As Integer

    originalData = Selection
    nRows = UBound(originalData, 1)
    nColumns = UBound(originalData, 2)
    newData = originalData

    For x = 1 To CInt(nColumns / 2)
        For y = 1 To CInt(nRows / 2)
            newData(y, x) = originalData(nRows - y + 1, nColumns - x + 1)
            newData(nRows - y + 1, nColumns - x + 1) = originalData(y, x)
            newData(y, nColumns - x + 1) = originalData(nRows - y + 1, x)
            newData(nRows - y + 1, x) = originalData(y, nColumns - x + 1)
        Next y
    Next x

    ' --- option 1: overwrite data ---
    Selection = newData
    ' --- end of option 1 ---

    ' --- option 1: insert new sheet ---
    Dim newSheet As Worksheet

    Set newSheet = Selection.Parent.Parent.Worksheets.Add
    newSheet.Range(Cells(1, 1), Cells(nRows, nColumns)) = newData
    ' --- end of option 1 ---
End Sub

答案2

您可以创建一个从 N2 单元格开始具有 9 到 1 的辅助行,以及一个从 O1 单元格开始具有 12 到 1 的辅助列。

现在,输入以下公式并向右向下拖动:

=INDEX($A$1:$L$9,$N2,O$1)

参见下图:

在此处输入图片描述

答案3

您可以使用 INDEX 执行此操作:

=INDEX($A$1:$C$3,((ROWS($A$1:$A$3))+1)-ROWS($G$1:$G1),((COLUMNS($A$1:$C$1))+1)-COLUMNS($G$1:G1))

假设你的表在范围内$A$1:$C$3

您需要了解我的公式并更改范围以满足您的需要。

更改$A$1:$C$3以适合您表格的整个范围。 更改$A$1:$A$3以适合您表格的顶行。 更改$A$1:$C$1以适合您表格的第一列。

确保其中有 $ 符号。

在此处输入图片描述

编辑 OP

在单元格中M1使用以下公式:

=INDEX($A$1:$L$9,((ROWS($A$1:$A$9))+1)-ROWS($N$1:$N1),((COLUMNS($A$1:$L$1))+1)-COLUMNS($N$1:N1))

将其拖到X1,然后向下拖到X9,即可直接反转原始表格。

相关内容