Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

SOS per una formula tostissima con excel!

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

SOS per una formula tostissima con excel!

Postdi al3ssio » 14/10/06 12:03

Ciao a tutti, se vi scrivo è perchè, dopo tanto rompermi la testa, devo ammettere di non essere riuscito a scrivere una formula per un'operazione che a prima vista sembra facile, ma che in realtà non lo è. O almeno questa è la mia visione del problema.

Ve lo illustro:

Ho una sequenza di numeri in una riga excel cosi fatta:

000000001000000000003002000000460000000500000607000000000
(in pratica è una successione di numeri da 1 a 7 che, oltre a non essere necessariamente in ordine crescente, possono essere fra loro separati da uno zero).

Il mio obiettivo è di avere un'altra riga al di sopra di questa con questo aspetto:

11111111133333333333222444444465555555566666677000000000

In pratica, si tratta di togliere gli zeri (tranne quelli finali che seguono il 7 e che vanno lasciati), ponendoli uguali alla prima cifra che segue la sequenza (di zeri stessi).

Spero di esser stato chiaro, altrimenti non esitate a pormi domande e chiarimenti.

Confido in voi.

Come sempre.

A.
al3ssio
Utente Senior
 
Post: 234
Iscritto il: 08/05/04 15:59

Sponsor
 

Postdi Anthony47 » 14/10/06 13:15

Cia Alessio, una domanda:
1) dato che le cifre nel numero non sono necessariamente crescenti, cosa intendi con "tranne quelli finali che seguono il 7 e che vanno lasciati"? nel senso che il 7 potrebbe non essere alla fine della stringa: e' prevalente il concetto di "7" o di "ultima cifra nella stringa a parte gli 0"?

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi taurex » 14/10/06 14:07

inoltre, la stringa ha una lunghezza costante o variabile?
Moderatore di
Immagine
taurex
Utente Senior
 
Post: 145
Iscritto il: 09/08/06 09:34
Località: Asti

Postdi Alexsandra » 14/10/06 14:21

Devi contare la lunghezza della stringa e togliere gli 0 e al loro posto mettere la lettera(numero) che segue lo 0

00000345 diventa
33333345

solo quando trova il 7 devi lasciare gli zeri e non effettuare la sostituzione.

Anche con una stringa a lunghezza variabile risolvi contandone i caratteri.

Però, mi piacerebbe sapere da dove la ricavi?
la importi in excel da altro programma ?
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale.

Win7 + Office 2003 Ita
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi al3ssio » 14/10/06 14:25

Allora:
1)Innanzitutto non si tratta di una stringa. Immaginate semplicemente che le varie cifre si susseguano in una serie di celle adiacenti di una stessa riga;

2)Questa successione di cifre, come detto, ha sempre la seguente struttura: inizia con degli zeri,poi si susseguono (una sola volta ciascuna) le cifre 1,2,3,4,5,6,7 che possono o meno, a loro volta, essere separate da uno o più zeri. Infine, la successione termina con degli zeri.

Quello che voglio ottenere (nelle celle di un'altra riga) mi sebra sia chiaro. Non esitate a porre altre domande.


Grazie per l'interesse.

Alessio.
al3ssio
Utente Senior
 
Post: 234
Iscritto il: 08/05/04 15:59

Postdi archimede » 14/10/06 14:41

Supponendo che la prima cella da cui parte la sequenza di numeri sia A1 e che il risultato tu lo voglia nella riga 2, prova a mettere la seguente formula in A2 e copiala a destra fin dove necessario:
Codice: Seleziona tutto
=SE(A1>0;A1;SE(B1=0;B2;B1))
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi al3ssio » 14/10/06 15:32

Grazie mille alessandro!
(Io partivo sempre dall'ultima cella della sequenza e le confrontavo a due a due, ma così facendo avevo un casino di condizioni! Così è perfetta!)


P.S.
Ultima cosuccia rapida rapida... mi piacerebbe, una volta creata questa sequenza numerica, dare ad ogni cella un colore a seconda del valore che vi si trovi. Purtroppo la formattazione condizionale permette di mettere solo 3 condizioni, mentre io ho 7 cifre (1,2,3,4,5,6,7). C'è un modo per dare un colore ad ogni cifra? (magari una formula che permette di scegliere il colore di riempimento della cella a seconda del valore che vi è all'interno).
al3ssio
Utente Senior
 
Post: 234
Iscritto il: 08/05/04 15:59

Postdi archimede » 14/10/06 15:54

al3ssio ha scritto:Purtroppo la formattazione condizionale permette di mettere solo 3 condizioni, mentre io ho 7 cifre (1,2,3,4,5,6,7). C'è un modo per dare un colore ad ogni cifra? (magari una formula che permette di scegliere il colore di riempimento della cella a seconda del valore che vi è all'interno).
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)

Dim icolor As Integer
If Not Intersect(Target, Range("A1:A10")) is Nothing Then
 Select Case Target
  Case 1 To 5
     icolor = 6
  Case 6 To 10
     icolor = 12
  Case 11 To 15
     icolor = 7
  Case 16 To 20
     icolor = 53
  Case 21 To 25
     icolor = 15
  Case 26 To 30
     icolor = 42
  Case Else
     icolor = 0
 End Select
 Target.Interior.ColorIndex = icolor
End If
End Sub
Cambia A1:A10 e le altre condizioni a seconda delle tue esigenze.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi al3ssio » 18/10/06 09:16

:-/

Ciao Archimede,

mi dai una mano per capire come usare queste stringhe? Non sono pratico di macro (se si tratta di macro)... e qual è la corrispondenza codice-colore?

Grazie mille


Alessio
al3ssio
Utente Senior
 
Post: 234
Iscritto il: 08/05/04 15:59

Postdi al3ssio » 20/10/06 14:28

Dove metto esattemante questa stringa, SOS...

A
al3ssio
Utente Senior
 
Post: 234
Iscritto il: 08/05/04 15:59

Postdi Anthony47 » 20/10/06 23:47

Ciao Alessio,
allora fai cosi:
-tasto destro sul tab del tuo foglio
-scegli l' opzione "Mostra codice"
-ti si apre il vba editor non in un "Modulo" standard ma nella pagina di codice "di Foglio"
-incolli sulla parte destra (dovrebbe essere tutta bianca) il codice di Archimede.

Se, come dici, il contenuto della tua cella e' sempre compreso tra 1 e 7 potresti usare questi numeri direttamente come indice di colore, con la seguente macro:
Codice: Seleziona tutto
Sub Colora()
For Each Cell In Range("A1:A10")
  Cell.Interior.ColorIndex = Cell.Value + 2
Next
End Sub


Metterai questo codice in un "Modulo" sul vba (se manca, sai come crearlo, vero?).
Modifica l' istruzione For Each etc etc in modo da selezionare l' area di effettivo tuo interesse; mentre la macro di Archimede si attivava da sola a ogni input nel foglio, la mia proposta va attivata manualmente, o con un bottone, o con un tasto di scelta rapida.
Se ti serve si puo' far partire ad ogni Ricalcolo automatico del foglio.

E' anche da evitare la coesistenza tra la macro sulla pagina di "Codice di Foglio" e questa sul Modulo: provale separatamente e poi utilizza la piu' comoda.

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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "SOS per una formula tostissima con excel!":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti

cron