contare o trovare celle piene
Hai un problema con Excel? 
contare o trovare celle piene
di Vale (utente non iscritto) data: 10/09/2015 11:04:31
Salve!non riesco a capire come creare un codice in vba che riesca a trovare solo le celle dove sono inseriti dei numeri. Sia per scriverle su un file txt che per trovare un numero specifico o trovare solo i numeri pari per esempio.
Vi prego aiutatemi!!!!!
grazieeeeeeeeeeeeeeeee
di alfrimpa data: 10/09/2015 11:20:28
Ciao Vale
La funzione qui sotto conta i valori numerici presenti nell'intervallo passato come parametro nella funzione.
Sai inserirla nella cartella di lavoro e poi usarla sul foglio?
Non ho capito le altre due domande; puoi allegare un file di esempio e spiegare meglio?
Alfredo
Function contanumeri(zona)
Dim cella As Range
For Each cella In zona
If IsNumeric(cella.Value) Then
contanumeri = contanumeri + 1
End If
Next cella
End Function
|
di Vecchio Frac data: 10/09/2015 14:38:39
Su IsNumeric ho sempre qualche perplessità ^_^
Nel caso particolare io proverei banalmente con [count(...)].
Il fatto è che isNumeric non mi tratta bene i numeri con notazione particolare... per esempio "1e3" e "1d3" sono riconosciuti come numeri (stanno entrambi per "1000"). Ma allo stesso tempo non vede bene le date, che non vede come numeri (sbagliando), mentre COUNT sì... insomma forse bisogna prima capire la definizione di "numero" che si vuole accettare ^_^
di tanimon data: 11/09/2015 14:54:56
ciao,
ipotizzando una serie da da 1 a 10 nel range("a1:a10")
entrambe le due macro che riporto inseriscono la parola "pari" o "dispari",
nel range("b1:b10").
Spero ti possano servire.
Ciao
Frank
Sub pari_dispari()
'adatta riferimenti alla tua situazione
r = 1
Do While Cells(r, 1).Value <> ""
num = Cells(r, 1).Value / 2
If num - Int(num) = 0 Then
Cells(r, 2).Value = "pari"
Else
Cells(r, 2).Value = "dispari"
End If
r = r + 1
Loop
End Sub
Sub pari_dispari_()
'adatta riferimenti alla tua situazione
For r = 1 To 10
num = Cells(r, 1).Value / 2
If num - Int(num) = 0 Then
Cells(r, 2).Value = "pari"
Else
Cells(r, 2).Value = "dispari"
End If
Next r
End Sub
|
di scossa data: 14/09/2015 09:32:59
cit.: "Il fatto è che isNumeric non mi tratta bene i numeri con notazione particolare... per esempio "1e3" e "1d3" sono riconosciuti come numeri (stanno entrambi per "1000"). Ma allo stesso tempo non vede bene le date, che non vede come numeri (sbagliando)"
Forse non è "lui" che sbaglia (do you remeber Value vs Value2 ?)
| A | B | C |
| 1 | 1 | =contanumeri(A1:A5) | 4 |
| 2 | a | | |
| 3 | 01/10/2015 | | |
| 4 | 5 | | |
| 5 | 1000 | | |
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.(George Bernard Shaw) |
Function contanumeri(ByRef zona As Range) As Long
Dim cella As Range
For Each cella In zona
If IsNumeric(cella.Value2) Then
contanumeri = contanumeri + 1
End If
Next cella
End Function |
di Vecchio Frac data: 14/09/2015 12:01:30
Ah d'accordo, e lo dice anche la Guida se è per questo:
"L'argomento obbligatorio espressione è un valore di tipo Variant contenente un'espressione numerica o un'espressione stringa.
IsNumeric restituisce True se espressione viene riconosciuta per intero come dato numerico, in caso contrario restituisce False.
IsNumeric restituisce False se espressione è un'espressione data."
Bel comportamento per una funzione che deve dirmi se quello che gli passo è un "numero"... autocontradditorio, impreciso, parziale e soprattutto *sbagliato*. La bestialità di Value2 che converte il dato a forza in tutto tranne Date (e Currency) non fa che peggiorare le cose :)
di scossa data: 14/09/2015 12:43:27
cit.: "La bestialità di Value2 che converte il dato a forza ..."
Punti di vista: secondo me è la proprietà Value che converte il dato originale (proprietà Value2), che anche per una data è un valore numerico di tipo Single, in data .....
Comunque, sono d'accordo con te: peggiorare le cose riesce bene a quelli di Redmond
| scossa's web site |
Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
di Vecchio Frac data: 14/09/2015 14:22:09
cit. " secondo me è la proprietà Value che converte il dato originale"
---> Ma è verissimo e purtroppo è pure la proprietà di default >_<
Vuoi Approfondire?