in una colonna contenente dei codici numerici (esempio:
332998000211569)
tutte le celle hanno la "linguetta" verde che rimanda al messaggio
"Numero archiviato come testo".
Ogni volta devo selezionare tutte le celle, cliccare sulla prima
linguetta verde e selezionare "Converti in numero".
Ho seguito le indicazioni riportate da Mauro nel post "Convertire
numeri inseriti come campi di testo in campi numero" ma non ottengo il
risultato voluto.
La differenza del mio caso rispetto a quello del post, è che i codici
presenti nelle celle
non sono preceduti dall'apostrofo.
Se può tornare utile, il file che utilizzo è generato da un
applicativo aziendale
che lo salva come tipo "Web Page (*.htm;*html)"
Prima di lavorarci lo salvo come xls.
Buona giornata
Ricky
Gentilmente, il link, grazie.
La differenza del mio caso rispetto a quello del post, � che i codici
presenti nelle celle
non sono preceduti dall'apostrofo.
******************************
Capito pochissimo.
A1: 1234567 formattato come testo.
B1: A1*1
Seleziona B1
Copia
Incolla speciale
Seleziona: Valori
Ok
Se invece � di importazione dati che stiamo
parlando, mentre importi una colonna
puoi dichiarare il tipo di dati che devi
visualizzare.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/officeit/threads
queesto è il link:
> A1: 1234567 formattato come testo.
> B1: A1*1
> Seleziona B1
> Copia
> Incolla speciale
> Seleziona: Valori
> Ok
Tenendo presente il tu o suggerimento, ho creato questa semplica ma
effiace macro:
Public Sub ConvertiInNumero()
Sheet1.Select
'Nella colonna A i numeri archiviati come Testo
'Inserisco nella colonna B la formula per moltiplicare x 1 i valori
della colonna A
For i = 2 To 10
Cells(i, 2).FormulaR1C1 = "=RC[-1]*1"
Next i
'Incollo nella colonna B i valori delle formule
Columns("B:B").Select
Selection.Copy
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
'Metto il formato desiderato alla colonna A
Columns("A:A").Select
Selection.NumberFormat = "0"
'Elimino la colonna B
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
End Sub
> Se invece è di importazione dati che stiamo
> parlando, mentre importi una colonna
> puoi dichiarare il tipo di dati che devi
> visualizzare.
Non ho la possibilità di modificare il formato delle colonne del file
che esporto da sistema.
Visto che non riesco a spiegare in altro modo come è fatto il file
originale,
volevo chiederti se posso girarti un esempio con 2 righe di dati,
per vedere come poter risolvere in maniera meno macchinosa il problema
(e per imparare qualcosa di nuovo...)
In ogni caso hai risolto il mio problema
Grazie per il prezioso aiuto
Ricky
ciao ricky
prova questa un po' più corta agisce sulla selezione:
Sub numeri_testo()
If TypeOf Selection Is Range Then
Selection.Value = Selection.Value
End If
End Sub
saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm
Le mie case nel web:
http://excelvba.altervista.org/blog/index.php/Table/Excel-VBA/
Visto che non riesco a spiegare in altro modo come � fatto il file
originale,
volevo chiederti se posso girarti un esempio con 2 righe di dati,
per vedere come poter risolvere in maniera meno macchinosa il problema
(e per imparare qualcosa di nuovo...)
In ogni caso hai risolto il mio problema
Grazie per il prezioso aiuto
********************************************
Grazie ate per il riscontro.
Per il file, puoi condividerlo
su uno dei tanti siti che lo permettono,
cos� tutti possono, volendo,
scaricarlo e intervenire nella
discussione. Grazie.
Select � male.
Perde tempo ed � inutile.
Oltre al suggerimento di Roberto,
prova questo(qui per la colonna B,
del Foglio1,sai tu qual'� la tua
colonna ed il tuo foglio):
Public Sub m()
'dichiaro le variabili
Dim wk As Workbook
Dim sh As Worksheet
'metto un riferimento al Workbook
'che contiene la macro
Set wk = ThisWorkbook
With wk
'metto un riferimento al Foglio1
'(in questo caso specifico Foglio1
'dove voglio operare)
Set sh = .Worksheets("Foglio1")
End With
With sh
.Range("B:B").Value = .Range("B:B").Value
.Range("B:B").NumberFormat = "General"
End With
'Set a Nothing delle variabili oggetto
Set sh = Nothing
Set wk = Nothing
End Sub
Qui:
.Range("B:B").NumberFormat = "General"
puoi sostituire eventualmente con una
formattazione a tua scelta. Due esempi:
.Range("B:B").NumberFormat = "#,##0.00"
.Range("B:B").NumberFormat = _
"_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
rispettivamente:
numero con separatori di migliaia e decimali
contabilit� con simbolo dell'Euro
Non ho la possibilit� di modificare il formato delle colonne del file
che esporto da sistema.
**************************************
Io ho scritto di importazione.
E' come *carichi* il file, non
cosa c'� nel file.
r ha scritto:
> On 19 Nov, 16:00, Ricky <rickyi...@libero.it> wrote:
> > On 19 Nov, 15:19, "Mauro Gamberini"
> ciao ricky
> prova questa un po' più corta agisce sulla selezione:
> Sub numeri_testo()
> If TypeOf Selection Is Range Then
> Selection.Value = Selection.Value
> End If
> End Sub
>
Ciao Roberto,
il risultato della macro è nullo.
E' ormai certo che tutto dipende dal formato dei codici che devo
trasformare!
Grazie per l'aiuto che tornerà utile in casi più tradizionali
Ricky
> With sh
> .Range("B:B").Value = .Range("B:B").Value
> .Range("B:B").NumberFormat = "General"
> End With
>
> 'Set a Nothing delle variabili oggetto
> Set sh = Nothing
> Set wk = Nothing
grazie per il suggerimento.
L'ho modificato in questo modo:
nr = Sheet1.Range("A65536").End(xlUp).Row
With sh
.Range(Cells(2, 2), Cells(10, 2)).Value = .Range(Cells(2, 2),
Cells(10, 2)).Value
.Range(Cells(2, 1), Cells(10, 1)).Value = .Range(Cells(2, 2),
Cells(10, 2)).Value
.Range(Cells(2, 1), Cells(10, 1)).NumberFormat = "0"
'Cancello la colonna d'appoggio
.Columns(2).Delete
End With
Ricky
<cut>
Mi sfugge qualcosa.
Non servono colonne d'appoggio.
Il codice che ho postato io,
prende quanto hai in colonna B
e(in pratica) ricopia sulla stessa
colonna il valore.
Se(se) � la colonna A dove hai
i numeri/testo, fai l'operazione
su quella colonna. Ripeto, non servono
colonne d'appoggio.
E' una specie di copia/incolla su se
stessa della colonna.
Se(se) non hai altri dati in quella colonna,
� inutile trovare l'ultima riga con un valore.
evidentemente quindi le celle sono formattate come testo ... quindi
prova:
Sub numeri_testo()
Selection.NumberFormat = "General"
If TypeOf Selection Is Range Then
Selection.Value = Selection.Value
End If
End Sub
saluti