| Formattare di Roberto |
Ciao ragazzi non è da molto tempo che mi
cimento con il vba, e per questo sono quì a chiedere informazioni.
il sito è eccezzionale, sarei perso senza di voi. comunque
veniamo ai fatti: dalla rete ho copiato una serie di dati che ho
poi incollato su un foglio excel range("f2:g30"), al momento di fare
la media dei valori mi sono trovato difronte ad un errore. le
celle sono tutte formattate in formato testo, cercando di cambiare
formato non succede nulla i valori rimangono sempre sul lato
sinistro. e' possibile con il vba rimediare portando tutti i
valori in formato numero e sul lato destro???
ciao a tutti e
grazie per le eventuali risposte.
mandi roberto
|
|
| di Big ronnie |
Se sono numeri interi fai così
range("f2:g30").select selection.numberformat = "0" se
ci sono dei decimali devi inserire uno zero per ogni cifra decimale
dopo lo zero fra apici range("f2:g30").select
selection.numberformat = "0,000" spero ti funzioni.ciao |
|
| di Roberto |
Ciao big ronnie ho provato anch'io quel
sistema, il risultato però è che se vai vai a controllare con
formato celle, il formato è numero, ma sulla cella il valore rimane
sempre a sinistra, e se per ipotesi sulla cella f32 immetto la
formula =media(f2:f30) mi dà errore.
grazie di tutto e spero
di essermi spiegato.
mandi roberto |
|
| di Apoben64 |
Ciao roberto, al di fuori del formato che desideri
avere , devi inteargire con il formato cella , allineamento a
destra. ti allungo il codice . un saluto luca
Sub Macro1()
'
' Macro1 Macro
' Macro registrata il 13/04/2006 da LUCA
'
'
Range("F2:G30").Select
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub | |
|
| di Roberto |
Ciao luca sei sempre molto gentile a
rispondere, forse mi sono spiegato male, nel range("f2:g30") ho dei
valori numerici copiati da internet, ora questi si dispongono nelle
celle come formato testo, allineati a sinistra con il triangolino di
errore per ogni cella. se ora su f31 vado a mettere la formula
=media(f2:f30) il risultato è #div/0! |
|
| di Apoben64 |
Roberto, utilizzando la prima macro ho risposto
alla richiesta dell'allineamento a sx. prova questa macro
(inserita tutta in un modulo) che invece converte il tuo range in
valore numerico , utilizzando una funzione pubblica che si richiama
in tutto il progetto ed una privata applicata al tuo range .
Sub converti()
Dim rng As Range
Dim c As Range
With ActiveSheet
Set rng = .Range("F2:30")
For Each c In rng
c.Value = EstraeNumeri(c.Value)
Next
Set rng = Nothing
End With
End Sub
Public Function EstraeNumeri(SS As String) As Long
Dim i As Integer
For i = 1 To Len(SS)
If IsNumeric(Mid(SS, i, 1)) Then
EstraeNumeri = EstraeNumeri & Mid(SS, i, 1)
End If
Next
End Function
| |
|
| di Apoben64 |
| Dimenticavo che ovviamente devi inserire la tua
formula. |
|
| di Big ronnie |
Cercando sulla guida in linea di excel ho trovato
che x convertire i numeri in formato testo in numeri si deve
moltiplicare il numerotesto x 1(uno numero).quindi con il
registratore di macro ho fatto questa semplice macro.ciao
;-d
Sub ConvertiTestoNumeri()
'assegno il valore uno all'ultima cella in modo da non interferire con altri dati.
Range("a65536") = 1 ' Uno è un numero e non Testo
Range("a65536").Select
Selection.Copy
Range("F2:G30").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
Range("a65536").Clear 'Pulisco l'ultima cella
End Sub
| |
|
| di Roberto |
Ragazzi siete mitici . con la routin di
apoben64 tutto fila liscio. e' da poco che mi sono avvicinato al
vba, e per me ogni giorno è una conquista, sono autodidatta, e cerco
di adattare al vba quello che mi ricordo del vecchio sinclair zx
spectrum. purtroppo la mia mente non è piu elastica e devo
accontentarmi. grazie anche a big ronnie sempre veloce nel
rispondere, cercherò per quanto posso anch'io di aiutare. tanti
auguri di buona pasqua a tutti. mandi roberto. |