Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXEL 2003 ottenere in una cella solo cognomi stesso punteggi

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

EXEL 2003 ottenere in una cella solo cognomi stesso punteggi

Postdi leo58 » 06/08/12 10:10

Ciao a tutti!

avrei bisogno di trovare una FORMULA che mi consenta di avere nella stessa cella Z1 come risultato tutti e soltanto i cognomi di una colonna A (di 25 righe) a cui corrisponda nella colonna Q (di 25 righe) lo stesso valore numerico 6. L'ordine di successione dei valori nella collonna Q è casuale.

Esempio
A1 = ROSSI Q1=6
A2 = VERDI Q2=9
A3 = GALLO Q3=6


Z1 = ROSSI, GALLO

E' possibile con una formula?
Andrebbe bene anche una macro.

Ho provato con

=CERCA(6;Q1:Q3;A1:A3)
ma mi restituisce solo il cognome (ROSSI) del primo valore 6...

Grazie
leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Sponsor
 

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi wallace&gromit » 06/08/12 10:28

ciao Leo,
premetto che si può magari risolvere in un modo più semplice, sentiamo se caso i moderatori.
Comunque questa macro funziona:
Codice: Seleziona tutto
Sub concatena()
compila = ""
For I = 1 To 25
If Cells(I, 17).Value = 6 Then
compila = compila & "; " & Cells(I, 1).Value
End If
Next I
compila = Mid(compila, 3, Len(compila))
Range("Z1").Value = compila
End Sub

Edit: avevo compilato con le colonne A e C, corretto con colonna Q!
inoltre ho introdotto uno spazio dopo ";"
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 06/08/12 13:31

Grazie, wallace&gromit !!! Funziona! Mi hai dato il modo di risolvere un un problema su cui mi stavo scervellando da alcuni gioni...

Vista la mia pressochè nulla competenza sul linguaggio di programmazione di una macro, posso chiederti cosa indicano i termini " compila & " e " Mid(compila, 3, Len(compila))"?

Grazie ancora

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi wallace&gromit » 06/08/12 14:23

compila è il nome dell'incognita.

Ogni volta che trova un dato aggiunge alla lista precedente il nuovo dato, quindi riprendo la vecchia (compila) uso & per legare, aggiungendo "; " e il nuovo nome trovato.

Così facendo però il risultato inizierà con un "; "
quindi con una piccola correzione prendo solo una parte del testo:
Mid( testo, inizio, lunghezza)
inserendo compila, 3, len(compila) prendo la sequenza creata ma la leggo solo a partire dal 3 carattere, in seguito per tutta la lunghezza.

Sono tutte cose che ho pescato qua e là nel forum.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 06/08/12 14:57

Ok, adesso riesco ad orientarmi meglio nella logica di composizione.

Un'altra domanda: se avessi necessità di far ccomparire nella stessa cella Z1, sia cognomi con valori 6 sia i cognomi con valore 7, quale variazione è necessario fare alla macro?

Ti ringrazio per la cortesia

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi wallace&gromit » 06/08/12 15:12

puoi mettere due condizioni:
Codice: Seleziona tutto
If Cells(I, 17).Value = 6 Or Cells(I, 17).Value = 7 Then

oppure fare due cicli separati, in modo che prima c'è la lista dei 6, poi la lista dei 7.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 06/08/12 16:32

Sono riuscito a far funzionare le macro in tutti e due i modi che mi hai indicato!

Ultimo quesito: è possibile aggiungere manualmente in una cella già occupata dalla funzione MEDIA() anche un carattere di testo dopo il valore numerico ottenuto (ad esempio un *, una lettera, un + o un - )? E che sintassi richiede in questo caso la macro per far riconoscerle il valore 6- o 6a o 6*?

Ancora grazie

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi wallace&gromit » 06/08/12 16:43

non puoi intervienire manualmente sulla formula. Puoi aggiungere del testo con la funzione concatena, per esempio: =concatena(media(),"*") darà la media e asterisco.
Però penso che la cosa più semplice sia affiancare una colonna in cui inserisci manualmente solo l'elemento aggiuntivo (asterisco). In questo modo potrai continuare a selezionare tutti i nomi con 6 con la macro di prima, oppure aggiungere una seconda condizione, che cerca se nella colonna successiva ci sia l'asterisco.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi Flash30005 » 06/08/12 16:43

=Media(A1:A20) & " Quello che vuoi"
oppure
="Quello che vuoi " & Media(A1:A20)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 06/08/12 17:32

Grazie, moderatore per il tuo contributo all'automazione dell'aggiunta di un elemento testuale al valore di una cella con Funzione.

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 06/08/12 17:36

Grazie per l'idea. Ho introdotto le variazioni alla tua macro e sono riuscito ad ottenere quaello che cercavo. In questi giorni proverò altre possibilità. Se ho qualche dubbio concettuale di base mi faccio sentire.

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 08/08/12 13:30

Ancora riguardo al problema di ottenere in una cella solo i cognomi di A! a cui corrispondono in Q1 il valore 6, avrei adesso questa necessità: far lavorare la macro nel Foglio1, ma riportare i risultati nella cella del Foglio2.

Con questa formulazione

    Sub concatena()
    compila = ""
    For I = 1 To 25
    If Cells(I, 5).Value = 6 Then
    compila = compila & ", " & Cells(I, 1).Value
    End If
    Next I
    compila = Mid(compila, 3, Len(compila))
    Worksheets("Foglio2").Range("E31").Value = compila
    End Sub

sono riuscito ad ottenere quello che voglio, ma la macro funziona solo se la lancio dal Foglio1.
Cosa devo fare per renderla operativa da qualsiasi altro foglio di lavoro, cioè dire alla macro di andare a lavoare nel Foglio1??

C'è qualcuno in ascoilto?

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi pietrol » 08/08/12 14:52

Ciao leo58
correggi così la macro
Codice: Seleziona tutto
Sub concatena()
compila = ""
For I = 1 To 25
If Worksheets("Foglio1").Cells(I, 5).Value = 6 Then
compila = compila & ", " & Worksheets("Foglio1").Cells(I, 1).Value
End If
Next I
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Range("E31").Value = compila
End Sub


ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 08/08/12 15:07

Ah, ecco dovìera l'errore!

Sub concatena()
compila = ""
For I = 1 To 25
If Worksheets("Foglio1").Cells(I, 5).Value = 6 Then
compila = compila & ", " & Worksheets("Foglio1").Cells(I, 1).Value
End If
Next I
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Range("E31").Value = compila
End Sub

Perfetto

Grazie mille, Pietrol.

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 09/08/12 10:32

Ciao a tutti!

a questo punto vorrei variare la macro per ricavare dal foglio di lavoro in immagine
Immagine




nella cella E31 tutti e soltanto i cognomi degli alunni con valore 6, seguiti ciascuno dalla questa stringa concatenata

    compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Range("G1") & " in luogo di

ripetuta per ogni colonna da C a Ndove sia presente il valore 6.

Con questa macro io riesco a farlo solo per il valore 6 della colonna E

    Sub concatena()
    compila = ""
    For I = 1 To 25
    If Worksheets("Foglio1").Cells(I, 5).Value = 5 Then
    compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Range("G1") & " in luogo di "
    End If
    Next I
    compila = Mid(compila, 3, Len(compila))
    Worksheets("Foglio2").Range("E31").Value = compila
    End Sub

Invece vorrei poterlo fare per le colonne da C a N.


Cosa devo cambiare?
Grazie
leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 09/08/12 11:08

Ciao a tutti!

a questo punto vorrei variare la macro per ricavare dal foglio di lavoro così organizzato per 25 righe

A1=Cognome B2= ITA C1=STO D1=GEO E1=MAT F1=ING G1=FRA H1=TEC I1=CIV L1=COM M1=ARTE N1=SPA
A2=ROSSI B2= 6 C2 = 7 D2= 6 E2 = 8 F2= 9 G2 = 7 H2= 6 I2= 5 L2= 6 M2= 5 N2= 6

nella cella E31 tutti e soltanto i cognomi degli alunni con valore 6, seguiti ciascuno dalla questa stringa concatenata


compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Range("G1") & " in luogo di

ripetuta per ogni colonna da C a Ndove sia presente il valore 6.

Con questa macro io riesco a farlo solo per il valore 6 della colonna E

    [Sub concatena()
    compila = ""
    For I = 1 To 25
    If Worksheets("Foglio1").Cells(I, 5).Value = 5 Then
    compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Range("G1") & " in luogo di "
    End If
    Next I
    compila = Mid(compila, 3, Len(compila))
    Worksheets("Foglio2").Range("E31").Value = compila
    End Sub
    [/list]
Invece vorrei poterlo fare per le colonne da C a N.


Cosa devo cambiare?
Grazie
leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi Flash30005 » 09/08/12 11:21

Non ho seguito bene l'argomento ma penso che possa andare bene così
Codice: Seleziona tutto
Sub concatena()
For CC = 3 To 14
compila = ""
For I = 1 To 25
If Worksheets("Foglio1").Cells(I, CC).Value = 6 Then
compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Range("G1") & " in luogo di "
End If
Next I
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Cells(31, CC).Value = compila
Next CC
End Sub


altrimenti spiega cosa non va

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 09/08/12 18:31

Grazie, Flash. La tua macro funziona, ma non soddisfa le mie necessità: inserisce alla riga 31 ma esattamnete nella colonna corrispondente alla presenaza del valore 6 la stringa. Io invece avrei necessità di avere la stringa ripetuta tutta in una stessa cella, contente il nome delle diverse materie trese dall' 'intestazione sulla riga 1 (qui l'errore è mio: infatti la stringa che ho programmato ripete sempre la materia in G1), & Worksheets("Foglio1").Range("G1") &.

Che suggerimenti mi dai per ottenere i due effetti?

leo58

Ciao e grazie

PS cosa vuol dire "CC"
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi Flash30005 » 09/08/12 21:01

Se vuoi il risultato tutto in una cella, indica in quale cella del foglio2 vorresti questo risultato.
Sarebbe opportuno che sistemassi i titoli in celle diverse da G1 in maniera tale da avere tutte le materie


CC sta per numero di colonna da 3 a 14 quindi dalla colonna C alla colonna N

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXEL 2003 ottenere in una cella solo cognomi stesso punt

Postdi leo58 » 10/08/12 11:57

Se vuoi il risultato tutto in una cella, indica in quale cella del foglio2 vorresti questo risultato.


Flash, vorrei che apparissero nella cella W32 del foglio 2; ma non so come fare: basta mettere tra virgolette "W2" oppure sono necessari altri parametri?

Sarebbe opportuno che sistemassi i titoli in celle diverse da G1 in maniera tale da avere tutte le materie


I tioli che vorrei avere nella stringa concatenat in caso di valore 6 sono presenti nelle celle C1:N1 : che sintassi devo usare?


Grazie

leo58
Avatar utente
leo58
Utente Junior
 
Post: 26
Iscritto il: 06/08/12 09:50

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "EXEL 2003 ottenere in una cella solo cognomi stesso punteggi":


Chi c’è in linea

Visitano il forum: patel e 7 ospiti