Geralmente, prefiro resolver problemas sem macros, mas não consegui encontrar uma solução fácil sem eles agora.
Abaixo, a macro inverte a matriz selecionada e a grava de volta no local original ou em uma nova planilha.
Para executar a macro:
- Pressione Alt + F11 para abrir o editor do Visual Basic
- cole o código em um módulo (insert - module)
- nota: depois de adicionar um código, você precisará salvar sua pasta de trabalho como uma pasta de trabalho habilitada para macro se quiser manter a macro (se não for necessária no futuro, também é bom mantê-la como .xlsx )
- mantenha a opção necessária (substitua os dados originais ou crie uma nova planilha) e exclua os outros
- selecione a tabela inteira para inverter
- vá para "visualizar" - "macros" - "visualizar macros" - selecione a macro (InvertTable) e pressione executar
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