Domanda Utilizzo VSTACK diviso per filtri

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
27.933
6.123
2.345
55
Arce
2016, 2019, 365
semplicemente non sono stato capace
Le soluzioni date servono ad aiutare nel risolvere l'esigenza, ma siamo qui per spiegarle e se ti limiti ad incollarle una vale l'altra, per cui te ne spiego una per tutte:
Semplificando e partendo dalla tua, sempre con la convalida in B2
=SE(B2="";STACK.VERT(Amici;Parenti;Conoscenti);INDIRETTO(B2))
La prima parte la ritengo semplice, visto che rispecchia la tua, la seconda parte è ancora più semplice, richiama con INDIRETTO l'elenco che hai creato rendendo tutto dinamico ed indipendente dal numero di righe che compongono gli elenchi.

Ciao.
P.S.
Stai compromettendo le statistiche di ipolito @ipolito (ciao Nucio) 😆
 

ipolito

Excel Expert
Expert
14 Maggio 2023
3.768
1.481
145
52
Lago di Garda sponda bresciana
365
Ciao Alfredo,
Scherzosamente dico di aver un file umin cui mi segno l'andamento delle discussioni, dove al 99,999% viene segnata come risolta sempre la prima soluzione anche se non realmente la più performante. Inoltre sono convinto che al 99,999% gli op fanno copia incolla senza comprendere le soluzioni 👋
 
  • Haha
Reactions: Terio

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.155
8.529
2.445
72
Napoli
Office 365
dove al 99,999% viene segnata come risolta sempre la prima soluzione anche se non realmente la più performante
Beh considerata la preparazione media degli utenti in Excel direi che è una strada obbligata.

Inoltre sono convinto che al 99,999% gli op fanno copia incolla senza comprendere le soluzioni 👋
Questa è una verità da scolpire nella pietra (nonostante gli sforzi del buon Terio @Terio ma è oggettivamente una cosa non facile da fare quella di spiegare formule così complesse)

Chissà se la mia proposta al post 16 sia stata non dico provata ma almeno vista o presa in considerazione.
 
  • Wow
Reactions: ipolito

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
27.933
6.123
2.345
55
Arce
2016, 2019, 365
Chissà se la mia proposta al post 16 sia stata non dico provata
Porta pazienza, ma se ha chiesto una formula ed ha manifestato difficoltà a copiarle, mi risulta difficile credere che possa essere interessato ad una macro che non sarebbe capace di adattarsi alla crescita dei nomi contenuti nelle tre tabelle o restituire tutti i nomi in caso di selezione dell'intero elenco.

Ciao.
N.B.
Il fatto che le tre tabelle sembrino tre colonne di un'unica tabella non aiuta e la difficoltà ulteriore sarebbe gestirle nel caso non fossero attigue, ecco perché sarebbe meglio usare i nomi e non gli intervalli, visto che già sono presenti.
 
  • Like
Reactions: Sgrubak

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.155
8.529
2.445
72
Napoli
Office 365
Porta pazienza,
Io ho tutta la pazienza del mondo.

Sai come si dice a Napoli? "Dicette 'o pappice 'a noce damme 'o tiempo ca te spertose"

Date le tue origini limitrofe a Napoli forse non hai bisogno di traduzione.

E poi a provare di cosa si ha paura che esploda il PC? Muoio_muoio

La curiosità è il sentimento che muove il mondo senza di quella saremmo ancora all'età della pietra Muoio_muoio

 
  • Haha
Reactions: ipolito and Terio

fabribasi

Nuovo utente
Original poster
4 Maggio 2023
11
0
1
Office 365
Eccomi, ammetto di aver fatto copia e incolla ma piano piano sto cercando di capirle per poi gestirle sull'altro excel. Spero di rientrare nella statistica Crepa_pelle.
Fidatevi che quello che per voi è semplice, per noi comuni mortali non lo è però mi ci metterò d'impegno
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.155
8.529
2.445
72
Napoli
Office 365
Fidatevi che quello che per voi è semplice, per noi comuni mortali non lo è però mi ci metterò d'impegno
Noi non sfuggiamo alla regola di essere "comuni mortali" e tutti siamo partiti dal punto che non si sapeva nulla di queste cose.

Con l'occasione (so di essere testardo Muoio_muoio) propongo una macro un po' più semplice della precedente commentata rigo per rigo

Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ur As Long
Dim cel As Range
If Not Intersect(Target, Range("B2")) Is Nothing Then
    Foglio2.Range("B3:B1000").ClearContents
    For Each cel In Foglio1.Range("B3:D" & Foglio1.Cells(Rows.Count, 2).End(xlUp).Row)
        ur = Foglio2.Cells(Rows.Count, 2).End(xlUp).Row
        If Foglio1.Cells(2, cel.Column).Value = Target.Value Then
            Foglio2.Cells(ur + 1, 2).Value = cel.Value
        End If
    Next cel
End If
End Sub

Righe 2 e 3: dichiarazione delle variabili necessarie
Riga 4: verifico che la cella che sto modificando sia la B2 (dove c'è la convalida)
Riga 5: cancello l'intervallo B3:B1000 del foglio2
Riga 6: inizio un ciclo For Each con cui esamino, cella per cella l'intervallo che va B3 all'ultima cella piena in colonna D
Riga 7: memorizzo il numero di riga dell'ultima cella piena in colonna B del Foglio2
Riga 8: se il valore presente in riga 2 colonna della variabile cel del ciclo For Each è uguale al valore scelto in convalida allora
Riga 9: nella prima cella vuota libera in colonna B del foglio mette il valore della cella (variabile cel del ciclo For Each
Riga 10: chiusura If
Riga 11: chiusura ciclo For Each
Riga 12: chiusura secondo If

Anche questo codice, come il precedente, va nel modulo del foglio2 non in un modulo standard
 
Ultima modifica:

Pitagora

Utente assiduo
Expert
12 Luglio 2015
3.418
676
145
Milano
Office 365
Puoi direttamente farlo senza usare vstak

Scrivi in A1 foglio 2 come intestazione CONOSCENTI

A2=INDEX(Foglio1!B3:D6,,MATCH(Foglio2!A1,Foglio1!B2:D2,0))

Cambiando l'intestazioni avrai i corrispondenti nominativi delle intestazioni digitate