Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Estrarre codice da tabella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 05/07/13 09:43

Buongiorno a tutti, mi inserisco anche io per una questione che si riallaccia a questo caso, in pratica se devo continuare con la cella c2 vorrei che trovasse 12700 in quanto 12600 l'ho già bruciato nella c1, come si può fare?

Premessa tardiva, sono alle prime armi, nonostante l'impegno mi sento meno di un neofita

grazie per l'eventuale aiuto

win 2007; excel 2003

Moderazione:
Ho separato il messaggio dalla discussione a cui era accodato, viewtopic.php?f=26&t=99533, perche' quella discussione e' ancora aperta.
Anthony
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Sponsor
 

Re: [EXCEL] Riportare ultimo valore solo SE

Postdi wallace&gromit » 05/07/13 10:59

Telescopio0 ha scritto: vorrei che trovasse 12700

sicuramente si può fare in maniera più elegante, però così funziona, a partire da C2 in giù inserisci:
Codice: Seleziona tutto
=INDICE($A$1:$A$100;CONTA.SE($B$1:$B$100;"m")+1+conta.valori($C$1:$C1))
attenzione ai segni di "$", devono esserci sempre, tranne prima dell'ultimo "1".
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1420
Iscritto il: 16/01/12 14:21

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 05/07/13 11:30

Ringrazio della pronta risposta, ho provato ad adattarla al mio caso....pensando di poterlo fare, ma in realtà non ci sto riuscendo. Cerco di dare i giusti elementi al fine di non abusare ulteriormente del tempo e chiedo scusa in anticipo se qualcosa non risutasse chiaro.

Ho un file dove ci sono 4 colonne con 4 serie di codici precostituiti ed univoci (colonne g,h,i,j).
Nelle colonne c,d,e,f ,in funzione di una particolare scelta, inserisco una x (in una sola cella delle colonne menzionate, mai contemporaneamente, in pratica o sono tutte vuote oppure c'è una sola x per riga a scelta )
In un'altra colonna (L) , in funzione di dove metto la x deve apparire il primo codice libero (colonne g,h,i,j)
da tener presente che la colonna C è riferita alla colonna g, la d alla h ecc. In pratica se un cliente sceglie un servizio io metto la x corrispondente a quel servizio e vado a pescare il codice libero corrispondente e glielo assegno.
Se fosse tutto sulla stessa riga non ci sarebbe grossi problemi, la questione si pone quando seleziono la x ad esempio in c10 e deve saltare fuori il primo codice libero che magari è in g2 e di seguito. Ovviamente il codice assegnato in qualche modo viene bruciato (meglio dire che se già assegnato non può e non deve essere più assegnato).

Codice: Seleziona tutto
C      D       E      F     G       H     I      J             L 
X      .       .       .     10    20    30    40     


inserisco la x in c1 ed in l1 appare 10

Codice: Seleziona tutto
C      D       E      F     G       H     I      J             L 
X       .        .     .     10    20    30    40            10
.       X        .     .     11    21    31    41            21


e inoltre

Codice: Seleziona tutto
C      D       E      F     G       H     I      J             L 
X      .       .      .      10    20    30    40            10
 .     .       .      .      11    21    31    41           
.      X       .      .      12    22    32    42            21

quest'ultimo è il caso che vorrei apparisse e quindi pescare il codice 21 perchè libero
il puntino indica cella vuota

scusate l'eccessiva spiegazione ma non sapevo come descriverla con semplicità e spero si capisca

w2007 exc2003
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Anthony47 » 06/07/13 00:44

Hummm... Secondo me devi ancora da affinare l' analisi del processo che hai in mente.
Al momento l' unica cosa che mi vene in mente e' una macro di worksheet_change:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CkArea As String, xCol As Long, yRow1 As Long, yRowLast As Long, I As Long
'
CkArea = "C1:F100"    '<< L' area che conterra' le X, e che accanto contiene le colonne coi numeri
'
If Application.Intersect(Range(CkArea), Target) Is Nothing Then Exit Sub
If UCase(Target.Value) <> "X" Or Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
xCol = Target.Column
yRow1 = Range(CkArea).Range("A1").Row
yRowLast = yRow1 + Range(CkArea).Rows.Count - 1
For I = yRow1 To yRowLast
    If Application.WorksheetFunction.CountIf(Range("L" & yRow1 & ":L" & yRowLast), Cells(I, xCol + 4)) = 0 And _
        Application.WorksheetFunction.CountIf(Cells(I, 7).Resize(1, 4), Cells(I, "L")) = 0 Then
        Cells(Target.Row, "L") = Cells(I, xCol + 4)
        Exit For
    End If
Next I
Application.EnableEvents = True
End Sub
Tasto dx sul tab col nome foglio che contiene i tuoi dati; scegli Visualizza codice; copia il codice della macro e incollalo nel frame di dx dell' editor delle macro che ti si e' aperto.
Personalizza la riga marcata <<.
Poi torna sul foglio excel e prova a inserire delle X su righe al momento libere in colonna L.

La macro considera "bruciati" tutti i numeri gia' presenti in col L; non libera la colonna L in caso che venga cancellata la X su quella riga (l' operazione quindi va fatta a mano), ne' controlla che non vi siano gia' altre X in riga. Questi aggiustamenti vanno fatto sulla base del tuo processo.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 08/07/13 12:40

Grazie infinite per l'interessamento, ho provato ad inserire lo sviluppo ma al momento non funziona, per lo meno non come vorrei.
Le x le devo inserire nelle colonne c d e f ed in L deve apparire il primo codice libero che viene pescato dalle colonne g h i j.

Ora ho provato a mettere lo stesso le x in L (anche se dovrebbe essere un luogo di destinazione) ma non vedo risultati.
Ho provato ad inserirle in c d e f e preleva dei codici ma in ordine direi sparso, senza una regola univoca.

Non essendo esperto, non mi azzardo a fare modifiche anche se sto cercando la logica e magari se la trovo posso intervenire per adeguare, ma dubito di capirci qualcosa.

Se per caso hai capito cosa serve ti sarei grato se riuscissi a fare la modifica utile.

Intanto grazie infinite per l'interessamento.
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 08/07/13 14:11

Niente da fare, ho provato a capirci qualcosa ma proprio non capisco praticamente nulla; il caso, mi rendo conto, sia un pò complicato ma non ho alternative di funzionamento. Se ad un determinato cliente (nella colonna B) assegno un codice (basato su quattro scelte possibili) , quel codice deve essere il primo libero e non deve essere possibile riutilizzarlo. Quindi Pippo sceglie uno dei quattro servizi (X in colonne c d e f che inserisco manualmente) e al riconoscimento del tipo di servizio gli va concesso il codice corrispondente (colonne g h i j) la conferma del codice assegnato è in L in corrispondenza del cliente B.
Avevo sviluppato una formulina banalotta che funzionava in riga quindi non applicabile perchè non pescava il primo codice libero ma solo il suo corrispondente in riga:
=SE(K34=A34;"MANCA SERVIZIO";SE(K34=A34&C34;G34;SE(K34=A34&D34;H34;SE(K34=A34&E34;I34;SE(K34=A34&F34;J34)))))
K è una colonna di controllo aggiunta all'uopo come pure A. E' così sempliciotta che pensavo di partire da li per inserirgli la parte mancante, poi ho visto lo sviluppo tramite INDICE e CONTA.SE e ho cambiato direzione ma temo ci voglia ben più di uno stratagemma.
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 08/07/13 15:00

Ho verificato ancora, e mi pare che la colonna C, inserendo la x, funzioni, mentre la D no, o parte dal secondo codice libero o salta, quindi credo che la strada sia giusta. Continuo le verifiche
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Anthony47 » 08/07/13 21:55

Nella mia risposta ho esordito lamentando una analisi parziale, per cui ho realizzato qualcosa su specifiche probabilmente inventate da me...
Per provare quanto ti ho suggerito dovresti replicare la struttura dati del tuo messaggio del 5-7 pomeriggio, e poi "giocare" con le X.

Se qualcosa non quadra dovresti spiegare esattamente da quali dati sei partito, quali X hai inserito, quale risultato hai ottenuto, quale risultato avresti voluto ottenere. Magari completando la descrizione tramite uno screenshot (vedi viewtopic.php?f=26&t=80395#p466013).
Questo consentira' di capire meglio la tua richiesta.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 09/07/13 08:20

Hai perfettamente ragione, ed è veramente geniale quello che hai fatto.
Spiego meglio, il codice che hai formulato l'ho inserito nel mio file, e come dicevo non ne voleva sapere di funzionare, o per lo meno funzionava ma a pezzi. Ora, su tuo suggerimento ho provato a fare un file exc sulle indicazioni che ti avevo dato e.... tutto funziona. Quindi se non va nel file dove serve può dipendere sicuramente dal fatto che parte dalla casella C2, e da quella riga che si sviluppa tutto, poichè nella riga 1 ci sono le intestazioni. Infatti nel file riprodotto mettendo tutto in c2 non funge quindi presumo si tratti di un mio errore di omissione. Detto questo e per non fare l'errore di omissione che ho già fatto prima aggiungo che il file che uso è farcito di formule e codici, non so se questo possa influire su risultato di questo codice, ma non credo, penso più alla riga di partenza. Provo a giocare con il tuo codice per vedere se riesco a calibrare da solo... Intanto grazie
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 09/07/13 08:45

Ok ci sto giocando e provo a descrivere cosa succede:
nel file riprodotto e per ora partendo da casella c1 con matrice codici su 4 righe inserisco la x in c1 e su L prende il corrispondente codice g1 (che è libero). Poi inserisco la X in F4 e il codice che prende è il secondo codice della colonna J (dovrebbe prendere il primo in j1 che è ancora libero), se poi inserisco la x in e3 fa la stessa cosa cioè prende il codice in I2 e non I1. Spero sia chiara la spiegazione. Non ho quindi provato a spostare nel codice alla riga 2.
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 12/07/13 14:51

Ciao Antony, ho cercato di capire qualcosa dal tuo codice ma quasi zero.... però facendo dei cambi di buon senso sono riuscito a farlo andare per ora. In pratica ho sostituito Row1 con Row2 perchè, come ti dicevo inizia dalla seconda riga, poi avendo un malfunzionamento sul primo codice libero che in realtà non pescava (vedi sopra) ho inserito al posto di I, 7 - I, 1.
Sto facendo delle prove e mi pare che per il momento stia girando. Non verrei aver fatto delle cavolate, che dici posso usarlo così;
attendo tuo commento.
Mi piacerebbe tanto capire bene il codice che hai scritto per impratichirmi un pò.
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Anthony47 » 13/07/13 17:06

Non ho capito in che cosa consiste la modifica che hai apportato (la mia macro aveva una riga da personalizzare che impostava l' area contenente i dati; se essi partono da riga2 era quella riga da modificare), ma se funziona e' Ok cosi'.
Se invece non funziona completamente allora dovresti...
...dovresti spiegare esattamente da quali dati sei partito, quali X hai inserito, quale risultato hai ottenuto, quale risultato avresti voluto ottenere. Magari completando la descrizione tramite uno screenshot (vedi viewtopic.php?f=26&t=80395#p466013)


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 13/07/13 20:21

Funziona perfettamente, ho fatto diverse prove e non sbaglia mai, i cambiamenti li ho descritti prima. Probabilmente è stata fortuna ma per me va bene così. Ti ringrazio ancora, il massimo sarebbe capire qualcosa in più ma va bene lo stesso.
Grazie ancora

Ciao
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Anthony47 » 14/07/13 15:19

il massimo sarebbe capire qualcosa in più

Aggiungo allo scopo qualche commento alla mia macro:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CkArea As String, xCol As Long, yRow1 As Long, yRowLast As Long, I As Long
'
CkArea = "C1:F100"    '<< L' area che conterra' le X, e che accanto contiene le colonne coi numeri
'
'Verifica che sia stata inserita una X nell' area definita:
If Application.Intersect(Range(CkArea), Target) Is Nothing Then Exit Sub
If UCase(Target.Value) <> "X" Or Target.Count > 1 Then Exit Sub
'Se SI, si continua; disabilitare il riconoscimento di altri eventi:
Application.EnableEvents = False
'Calcolare la colonna della X:
xCol = Target.Column
'Calcolare la riga di inizio e di fine dell' area delle X:
yRow1 = Range(CkArea).Range("A1").Row
yRowLast = yRow1 + Range(CkArea).Rows.Count - 1
'Scansionare riga per riga:
For I = yRow1 To yRowLast
'Verifica che il codice presente sulla riga, nella colonna G:J, non e' gia' stato usato in colonna L, E che un codice non sia gia' stato inserito in colonna L della riga:
    If Application.WorksheetFunction.CountIf(Range("L" & yRow1 & ":L" & yRowLast), Cells(I, xCol + 4)) = 0 And _
        Application.WorksheetFunction.CountIf(Cells(I, 7).Resize(1, 4), Cells(I, "L")) = 0 Then
'se condizioni valide, prendi quel valore ed esci:
        Cells(Target.Row, "L") = Cells(I, xCol + 4)
        Exit For
    End If
Next I
'Riabilita riconoscimento eventi:
Application.EnableEvents = True
End Sub

Comunque:
Telescopio0 ha scritto:In pratica ho sostituito Row1 con Row2

Anthony ha scritto:Non ho capito in che cosa consiste la modifica

Telescopio0 ha scritto:i cambiamenti li ho descritti prima

Confermo che non riesco a mappare nella mia macro la descrizione data prima ("In pratica ho sostituito Row1 con Row2"), ma non e' fondamentale.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 15/07/13 08:54

Il cerchio è chiuso, grazie per le spiegazioni, rimane forse una cosa, il codice così com'era funzionava parzialmente in pratica se inserivi la x in c1 e poi in f4 e proseguivi il primo codice era esatto mentre per gli altri partiva dal proprio secondo libero. La modifica I, 7 in I,1 potrebbe essere stata quella a farlo funzionare?
Ringrazio ancora per l'aiuto fondamentale e risolutore di Antony,

a presto
T0
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Telescopio0 » 18/07/13 09:00

Confermo perfetto funzionamento, ora ho un altro quesito legato allo stesso codice, se un altro utente apre il file con il codice di Anthony47 avendo office 2010 win 2007 dovrebbe funzionare ugualmente oppure bisogna fare delle modifiche. Lo dico perchè è capitato e il codice sembrava del tutto inattivo come se non ci fosse, mentre sul mio funziona a meraviglia, volevo capire se era un problema legato al suo pc oppure è necessario fare delle modifiche. Grazie ancora,

Un Saluto
T0
Telescopio0
Utente Junior
 
Post: 11
Iscritto il: 05/07/13 09:27

Re: [EXCEL] Estrarre codice da tabella

Postdi Anthony47 » 19/07/13 01:34

Il codice funziona anche su XL2010; probabilmente il file e' stato aperto con le macro disabilitate (File /Opzioni /Centro protezione, Impostazioni centro protezione /Impostazioni macro; controllare quali sono le impostazioni)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Estrarre codice da tabella":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti