題 反轉表(不是轉置)


我正在進行組織微陣列(TMA)圖像分析,用於分子病理學項目。 TMA是包含大量小圖像的幻燈片,在掃描幻燈片後,它需要與唯一ID的地圖匹配。

有時幻燈片是旋轉的,所以我需要的是一種翻轉Excel表格的方法,但如果這有意義的話,不能進行轉置。

例如

從:

enter image description here

至:

enter image description here

任何幫助將非常感激


3
2018-04-24 14:56


起源




答案:


我通常更喜歡在沒有宏的情況下解決問題,但是現在沒有它們我找不到簡單的解決方案。

下面的宏反轉選定的矩陣並將其寫回原始位置或新工作表。

要運行宏:

  • 按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

1
2018-04-25 07:12





您可以從N2單元格開始創建一個9到1的輔助行,從O1單元格開始創建一個12到1的輔助列。

現在,放下以下公式並向下和向下拖動:

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

見下圖:

enter image description here


2
2018-04-24 17:27





您可以使用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 適合你桌子的第一列。

確保你有$符號。

enter image description here

編輯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,直接反轉你的原始表。


2
2018-04-24 15:55



嗨PeterH,謝謝你的回复。我確定我做的事情很傻,但我無法讓它發揮作用。我的數據在A1到L9的範圍內 - dougzy
@dougzy看我的編輯 - PeterH