Macro per invertire dati di una tabella

Anonimo
2021-12-14T19:47:23+00:00

ciao a tutti,

avrei bisogno di una macro che inverta i dati di una tabella come nell'esempio del file excell da scaricare nel link sotto

https://we.tl/t-Wvqu0qJfR2

grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-12-15T10:01:13+00:00

Ciao Andrea,

assolutamente non è colpa tua, prova a scaricare il link sotto, c'è un file che ha ciò che voglio ma che non riesco ad adattare al mio nuovo file perchè sono " ignorante " nel VBA

se apri il file e clicchi il bottone " inversione coordinate cartesiane" i dati vengono invertiti (celle gialle) ogni volta che premi il bottone

questa macro va bene ma non sono in grado di adattarla al mio nuovo file

https://we.tl/t-CQFkvLjFz0

Con il beneficio del secondo file, penso di aver capito finalmente!

Pertanto, analogamente al secondo file, ho inserito le formule appropriate nella tabella in F7:H10 e ho assegnato la seguente macro al pulsante di inversione:

'========>>

Option Explicit

'-------->>

Public Sub Invertire_Tabella()

Dim SH As Worksheet 

Dim rTabella As Range, rDestinazione As Range 

Dim rCurrent As Range 

Const sTabella As String = "**F7:H10**"         **'<<=== Modifica** 

Const sDestinazione As String = "**A7**" 

Set SH = ActiveSheet 

With SH 

    Set rTabella = .Range(sTabella) 

    Set rDestinazione = .Range(sDestinazione) 

    Set rCurrent = ActiveCell 

End With 

rTabella.Copy 

rDestinazione.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= \_ 

    False, Transpose:=False 

Application.CutCopyMode = False 

rCurrent.Activate 

End Sub

'<<========

Con questa configurazione, ad ogni click del pulsante Invertire Tabelle, ottengo successivamente i seguenti due risultati:

  [![](https://learn-attachment.microsoft.com/api/attachments/389b75cc-2a10-467d-b746-0c04f55386dd?platform=QnA

e

  [![](https://learn-attachment.microsoft.com/api/attachments/c7743696-81e3-41a3-820b-d30cc01b8b5b?platform=QnA

Potresti scaricare il mio file di prova Andrea20211215.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-12-15T08:16:54+00:00

    Grazie Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-12-15T07:57:57+00:00

    Ciao Andrea, buongiorno,

    il concetto è corretto ,però non mi ero spiegato bene, la tabella "PRIMA" è già compilata perchè è lagata alla tabella 1 con le formule, una volta compilata avrei bisogno ,premendo un bottone per la macro, di invertire i dati nella tabella "PRIMA" (come il file che hai fatto) ,come l'esempio che ho messo nella tabella "DOPO"

    se possibile ogni volta che si prema il bottone si dovrebbe attivare la macro, non solo una volta...

    spero di essermi spiegato bene,sotto c'è il link del file

    Immagine

    https://wetransfer.com/downloads/d1337444c6091ee986e427e1be69429420211215070921/933b343319f74b5d1189620512baa0ae20211215071031/43c77d

    L'inversione dei dati della tabella non rappresenta un problema poiché il mio codice esegue già questa attività. Analogamente, la scelta di dove visualizzare i dati invertiti richiede solo l'assegnazione della prima cella di destinazione alla costante sDestinazione.

    Ciò che rappresenta un problema è la comprensione delle tue esigenze! Per ottenere lo scenario visualizzato nel file caricato, sarebbe sufficiente assegnare il valore L7 alla costante sDestinazione. Tuttavia, questo non è chiaramente il risultato che desideri ... Poi di nuovo, se desideri invertire la tabella ( A7:C10) in situ, i dati invertiti verranno visualizzati anche nella tabella in F7:H10 a causa delle formule in quest'ultima tabella ... Poi ancora, potresti ottenere i risultati che hai visualizzato senza ricorrere a VBA: basterebbe applicare delle formule alla terza tabella in L7:N10...

    In somma, sono rimasto a grattarmi la testa per capire esattamente cosa vuoi!

    Comunque, non appena ho compreso i requisiti corretti, dovrei essere in grado di modificare facilmente il codice di conseguenza.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-12-15T07:19:27+00:00

    ciao Norman e grazie,

    il concetto è corretto ,però non mi ero spiegato bene, la tabella "PRIMA" è già compilata perchè è lagata alla tabella 1 con le formule, una volta compilata avrei bisogno ,premendo un bottone per la macro, di invertire i dati nella tabella "PRIMA" (come il file che hai fatto) ,come l'esempio che ho messo nella tabella "DOPO"

    se possibile ogni volta che si prema il bottone si dovrebbe attivare la macro, non solo una volta...

    spero di essermi spiegato bene,sotto c'è il link del file

    grazie

    https://wetransfer.com/downloads/d1337444c6091ee986e427e1be69429420211215070921/933b343319f74b5d1189620512baa0ae20211215071031/43c77d

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-12-14T21:05:13+00:00

    Ciao Andrea,

    Immagineciao a tutti,

    avrei bisogno di una macro che inverta i dati di una tabella come nell'esempio del file excell da scaricare nel link sotto

    https://we.tl/t-Wvqu0qJfR2

    Prova qualcosa del genere:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

    Dim SH As Worksheet 
    
    Dim rTabella As Range, rDestinazione As Range 
    
    Dim arrIn  As Variant, arrOut() As Variant 
    
    Dim i As Long, j As Long, k As Long, iCtr As Long 
    
    Dim UB As Long 
    
    Const sTabella As String = "**A7:C10"         '&lt;&lt;=== Modifica** 
    
    Const sDestinazione As String = **"F7"** 
    
    Set SH = ActiveSheet 
    
    With SH 
    
        Set rTabella = .Range(sTabella) 
    
        Set rDestinazione = .Range(sDestinazione) 
    
    End With 
    
    arrIn = rTabella.Value 
    
    UB = UBound(arrIn) 
    
    ReDim Preserve arrOut(1 To UBound(arrIn), 1 To 3) 
    
    iCtr = UB 
    
    For i = 1 To UB 
    
        arrOut(i, 1) = arrIn(iCtr, 1) 
    
        iCtr = iCtr - 1 
    
    Next i 
    
    iCtr = UB - 1 
    
    arrOut(1, 3) = 0 
    
    For j = 1 To UB - 1 
    
        arrOut(j, 2) = arrIn(iCtr, 2) 
    
        iCtr = iCtr - 1 
    
    Next j 
    
    iCtr = UB - 1 
    
    For k = 2 To 3 
    
        arrOut(k, 3) = arrIn(iCtr, 3) 
    
        iCtr = iCtr - 1 
    
    Next k 
    
    rDestinazione.Resize(UB, 3).Value = arrOut 
    

    End Sub

    '<<========

    Potresti scaricare il mio file di prova Andrea20211214.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento