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

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

Postdi wallace&gromit » 10/08/12 13:05

ciao leo, ritorno io, ho visto il bel lavoro fatto da flash nel frattempo e penso che bisogna correggerlo 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"). Cells(1, CC) & " in luogo di "
End If
Next I
Next CC
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Cells(32, 23).Value = compila
End Sub
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Sponsor
 

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

Postdi leo58 » 24/08/12 15:02

Scusa, Wallace, se ti rispondo solo ora. Ma la mia dabbenaggine non mi aveva fatto notare la tua risposta alla pagina 2 (mi aspettavo Flash)...

Allora. ho provato la tua macro, ma non ottengo nè segnali di errore, nè la restituzione della stringa voluta...

Provo quindi a illustrare meglio il mio problema, con l'immagine
https://docs.google.com/open?id=0B6Tw9SoJwCwPWWt2OVdXTnBsWEk

Vorrei far apparire in una cella del Foglio2 (per esempio W32), per tutti i cognomi con valutazione <6 in qualche materia, la seguente stringa: COGNOME con con sei decimi in: "nome MATERIA" in luogo di "il VALORE<6" - ripetuta per ciascuna materia in cui c'è un valore <6.

Mi puoi aiutare?

Grazie per la disponibilità

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 » 24/08/12 15:49

ciao Leo,
non sono sicuro che quello che chiedi sia veramente quello di cui hai bisogno ... :mmmh:
e non riesco a vedere l'immagine.
Comunque il mio codice era una cavolata!
Eccone uno che sembra funzionare:
Codice: Seleziona tutto
Sub concatena()
For CC = 3 To 14
For I = 1 To 25
If Worksheets("Foglio1").Cells(I, CC).Value > 0 And Worksheets("Foglio1").Cells(I, CC).Value < 6 Then
compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & " con sei decimi in: " & Worksheets("Foglio1").Cells(1, CC).Value & " in luogo di " & Worksheets("Foglio1").Cells(I, CC).Value
End If
Next I
Next CC
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Cells(32, 23).Value = compila
End Sub
ma, ripeto, non sono sicuro che sia esattamente quello che ti serve, fai sapere.
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 » 24/08/12 16:54

Wallace, la macro che mi suggerisci, funziona :D ed quasi... ;) quello di cui ho bisogno: mi restituisce la stringa per tutte la meterie <6, però l'ordine di restituzione è: prima tutti i cognomi che hanno <6 nella materia della C, poi, daccapo, quelli che hanno <6 nella materia della colonna D etc. E la stringa mi ripete il cognome ad ogni nuova materia.

La mia necessità sarebbe quella di avere COGNOME con con sei decimi in: "nome di ciascuna MATERIA <6" in luogo di "il VALORE<6" di ciascuna materia (fino ad esaurimento, per ogni cognome, delle materie <6).

Sarebbe perfetto!

Grazie per attenzione

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 » 24/08/12 17:22

ciao,
invertendo le istruzioni For ... Next (prima I e poi CC) ottieni perlomeno la sequenza giusta di nomi, però il cognome viene ripetuto, ma ci sto lavorando...

EDIT

ecco qui
Codice: Seleziona tutto
Sub concatena()
For I = 1 To 25
For CC = 3 To 14
If Worksheets("Foglio1").Cells(I, CC).Value > 0 And Worksheets("Foglio1").Cells(I, CC).Value < 6 Then
insuff = insuff & " con sei decimi in: " & Worksheets("Foglio1").Cells(1, CC).Value & " in luogo di " & Worksheets("Foglio1").Cells(I, CC).Value
End If
Next CC
If insuff = "" Then GoTo NuovoI
compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & insuff
insuff = ""
NuovoI:
Next I
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Cells(32, 23).Value = compila
End Sub
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 » 24/08/12 17:59

Perfetto, Wallace! :)

Ho provato a confrontare il testo dell'ultima macro con il precedente, ma mi sono un po' perso...

In particolare ti chiedo:

    insuff = insuff & " con sei decimi in: "

che cosa rappresenta "insuff"?


Se poi volessi ottenere nella stringa il valore <6 scritto in testo anzichè in cifra, che sintassi potrei usare, qui (credo)?

    & " in luogo di " & Worksheets("Foglio1").Cells(I, CC).Value


Grande, Wallace!

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 » 24/08/12 21:06

"insuff" è semplicemente la variabile che ho scelto per registrare i voti sotto al 6. Ogni volta che se ne aggiunge uno scrive anche il testo " con sei decimi in:" ecc..

sì, puoi scrivere "in luogo di <6" e lasciare via il resto, che riporta il valore della nota.
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 » 24/08/12 21:23

Non mi sono spegato bene:

con
Se poi volessi ottenere nella stringa il valore <6 scritto in testo anzichè in cifra, che sintassi potrei usare, qui (credo)?


& " in luogo di " & Worksheets("Foglio1").Cells(I, CC).Value


volevo dire: Se poi volessi ottenere nella stringa il valore della cella <6 scritto però in lettere anzichè in cifra (per es. cinque invece di 5), che sintassi potrei usare?

Grazie comunque per le delucidazioni teoriche.

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 » 25/08/12 09:01

la trasformazione di numeri in testo era stata trattata in questo topic:
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=96191
però si andava molto più in là di quanto serve a te (suppongo che a te serva trasformare 5, 4 e al minimo 3) si può risolvere così:
Codice: Seleziona tutto
Sub concatena()
For I = 1 To 25
For CC = 3 To 14
nota = Worksheets("Foglio1").Cells(I, CC).Value
If nota > 0 And nota < 6 Then
Select Case nota
Case 5
notatext = "cinque"
Case 4
notatext = "quattro"
Case 3
notatext = "tre"
end select
insuff = insuff & " con sei decimi in: " & Worksheets("Foglio1").Cells(1, CC).Value & " in luogo di " & notatext
End If
Next CC
If insuff = "" Then GoTo NuovoI
compila = compila & "; " & Worksheets("Foglio1").Cells(I, 1).Value & insuff
insuff = ""
NuovoI:
Next I
compila = Mid(compila, 3, Len(compila))
Worksheets("Foglio2").Cells(32, 23).Value = compila
End Sub

non l'ho testata perchè non ho sotto mano il mio file originale, prova e dimmi
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 » 25/08/12 09:55

Ciao, Wallace!

Ho testato la tua macro è funziona perfettamente! :)

Sei un genio! :D

Mi rendo pure conto che, non conoscendo VB, non potrei mai arrivare a queste soluzioni. Però qualcosa ho imparato: per esempio come inserire stringhe si testo in Excel e come passare in rassegna celle da sinistra a destra e e dall'alto in basso, per un numero definito di volte. Anche il concetto di incognita mi è più chiaro.

Un'ultima domanda: cosa significa
Select Case nota
Case 5
notatext = "cinque" ?


Ancora un grazie (anche a gromit) ;)

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 » 25/08/12 18:13

non voglio fare il falso modesto ma veramente tutto quello che ho fatto l'ho "rubacchiato" in qualche mese di frequentazione di pc-facile (direi che i complimenti vanno ai maestri Flash e Anthony e altri utenti più avanti di me).
Il discorso vale sia per Wallace che per Gromit :lol:

Per rispondere alla domanda, dopo l'istruzione
Select Case
inserisci la variabile che vuoi verificare (in questo caso "nota" indica il valore presente nella cella analizzata)
nel caso il valore sia 5 la variabile notatext assume il valore di testo "cinque".
Questa istruzione viene usata quando ci sono tante possibilità per una variabile, invece di usare tanti "if".
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 » 26/08/12 10:53

Adesso mi è chiaro!

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

Precedente

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: Nessuno e 5 ospiti