La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Buongiorno
Ho un elenco generale di componenti meccanici sul foglio "Materiali" e sulla base di questo devo compilare - su un altro foglio - diverse tabelle su cui saranno elencati solo alcuni di essi.
Nell'elenco generale, i componenti sono elencati in base a diametro, descrizione, spessore e peso unitario.
Sul foglio delle tabelle dovrò poi inserire la quantità, il diametro (possibilmente da un elenco a tendina che faccia riferimento all'elenco generale) e la descrizione (sempre da un elenco a tendina).
Ciò di cui necessito è una formula da inserire in tabella nella cella dello spessore e del peso unitario.
Premetto che al tabella è sufficientemente completa ma che potrebbe essere anche ampliata con altri componenti non ancora inseriti, per cui il campo di ricerca nel foglio "Materiali" sarebbe bene non fosse limitato al numeri di righe attualmente scritte ma andasse ben oltre.
Avrei poi un altro paio di domande da fare per affinare ulteriormente la compilazione delle tabelle ma per il momento sarebbe già tanto risolvere questo problema.
Ringrazio anticipatamente chi riuscisse ad aiutarmi
Buongiorno. Il post andrebbe spostato in Macro e Vba.
Qualche buon samaritano si prenderà certamente in carico la richiesta.
Buongiorno
.....riallega il file mettendo qualche risultato atteso scritto a mano nelle celle dove lo vuoi ottenere....e spiega come ci arrivi
@dnilo:
allego un esempio di come dovrebbe essere compilata la tabella. Ho messo cose a caso (i valori di spessore e peso unitario però sono quelli corretti) tanto per intenderci.
ciao
bisogna estrapolare
tubi
curve
ec...
creare delle liste univoche
da li con indiretto richiamarle sul primo foglio come convalida
ma a mio avviso ti serve una colonna in più sul foglio
piping
dove mettere la convalida con tubi-curve ecc...
troppi dati per non farlo con il vba
ragazzi... non vi seguo. Fatemi voi un esempio
Considerate che la mia conoscenza di excel è limitata alle funzioni base
Ciao
Per la prima tabella in D5 da trascinare in basso
=SE(E($D5="";$B5="");"";INDICE(Materiali!$B$2:$B$13266;CONFRONTA(1;INDICE((Materiali!$C$2:$C$13266=$D5)*(Materiali!$D$2:$D$13266=$F5)*(Materiali!$E$2:$E$13266=$G5);;);0)))
Adatta i riferimenti per eventuali altre
ciao
migliorabile ma è l'idea che avevo
se poi dei vbaisti la sistemano è meglio ma funziona
ho sfruttato il difetto delle convalide che non azzerano quanto scritto al cambio.
clicca con il dx su una cella da D5 a D37
ti si apre una inputbox
scrivi le prime lettere del prodotto che cerchi tipo tub
tubo -ridu-rid quello che ti serve più scrivi più filtra.
all'invio tutte le convalide saranno popolate da quel che cerchi.
compresa quella dei diametri che saranno filtrati in base a quello che cerchi.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("D5:D37")) Is Nothing Then Tipo = InputBox("Inserisci prime lettere") If Tipo = "" Then Exit Sub Range("M1").Value = Tipo & "*" End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("M1")) Is Nothing Then Application.EnableEvents = False Sheets("Materiali").Select Call FiltraECopia_in_altra_colonna Call altracolonna Sheets("Piping Class 1 (Dettaglio)").Select End If Application.EnableEvents = True End Sub
il filtro avviene in foglio Materiali
è molto migliorabile ma non sono un vba dipendente?
la formula per il calcolo è
=SE.ERRORE(SE(O($C5="";$D5="");"";INDICE(Materiali!D$2:D$20000;CONFRONTA(1;INDICE((Materiali!$C$2:$C20000=$D5)*(Materiali!$B$2:$B$20000=$C5);;);0)));"")
prova e facci sapere
Sub FiltraECopia_in_altra_colonna() ActiveSheet.Range("$C$1:$C$20000").AutoFilter Field:=1 Range("$N$1:$N$20000").ClearContents ActiveSheet.Range("$C$2:$C$20000").AutoFilter Field:=1, Criteria1:=Sheets("Piping Class 1 (Dettaglio)").Range("m1"), _ Operator:=xlAnd Range("C2:C20000").SpecialCells(xlCellTypeVisible).Copy ActiveSheet.Range("I1").PasteSpecial Paste:=xlPasteValues Range("I1:I" & Rows.Count).AdvancedFilter Action:= _ xlFilterCopy, CopyToRange:=Range("N1"), Unique:=True Application.CutCopyMode = False Range("$I$1:$I$20000").ClearContents End Sub Sub altracolonna() ActiveSheet.Range("$C$1:$C$20000").AutoFilter Field:=1 Range("$m$1:$m$20000").ClearContents ActiveSheet.Range("$C$2:$C$20000").AutoFilter Field:=1, Criteria1:=Sheets("Piping Class 1 (Dettaglio)").Range("m1"), _ Operator:=xlAnd Range("C2:C20000").SpecialCells(xlCellTypeVisible).Offset(0, -1).Copy ActiveSheet.Range("I1").PasteSpecial Paste:=xlPasteValues Range("I1:I" & Rows.Count).AdvancedFilter Action:= _ xlFilterCopy, CopyToRange:=Range("M1"), Unique:=True Application.CutCopyMode = False Range("$I$1:$I$20000").ClearContents End Sub
@dnilo:
Ho provato ad inserire la stringa che mi hai suggerito ma quando al incollo nella cella D5 mi restituisce il messaggio "sono presenti uno o più riferimenti circolari ... "
clicco su Invio e nella cella compare uno 0 (zero) allineato a destra. Se poi provo a compilare il contenuto della cella con una delle descrizioni (tubo, curva, ecc.) mi scrive il testo come se nella cella non ci fosse nessuna formula.
Mi sembra che funzioni! Bisognerebbe che l'elenco che hai riprodotto in colonna N nel foglio materiali sia completo di tutti i componenti.
Anche la colonna M dei diametri andrebbe implementata (per fare un esempio, le riduzioni possono essere contrassegnate come 4"x3", ecc.)
Ciao
Sicuramente il file dove la stai incollando non è uguale all esempio sul quale ho lavorato
Hai ragione. Però trovo delle difficoltà nell inserimento delle descrizioni e dei diametri.
Cioè, se incollo la strinaga nella cella D5 quando poi inserisco una descrizione, mi sostutuisce il contenuto della cella con ciò che sto scrivendo
Ciao
Io non sono nel tuo pc....con la struttura dell esempio si ottengono i risultati attesi....
Allega il file con l errore
Ciao.
Ho fatto quanto dici ma quando provo ad inserire le descrizioni inserico i dati come se scivessi in una cella vuota e nella corrisopndente cella del diametro compare #N/D
ciao
fermi tutti ?
Danilo tu cerchi il diametro avendo spessore e peso
io cerco spessore e peso avendo il diametro
qual'è la cosa da fare? ?
Vitt
guarda che i diametri inerenti al filtro ci sono tutti
e i componenti ci sono tutti solo in forma univoca
è stupido scrivere TUBO SMLS SCH.5S - ASME B36.10M
per 20 volte in convalida
ti basta una volta e poi scegli il diametro
ed è finita.
regola uno
allegare il file con la struttura uguale all'originale
righe colonne uguali pena
non riuscire a variare formule/macro
proposte.