| | Post: 44 | Registrato il: 09/10/2013
| Città: SIRACUSA | Età: 39 | Utente Junior | Office 2019 | | OFFLINE | |
|
28/07/2015 01:24 | |
Buonasera Dei,
ho un altro piccolo quesito da porvi :
un tre volte al giorno dovrei copiare una tabella da un sito di prodotti per incollarla ovviamente in un foglio excel.
il problema è chequesto sito riporta i valori in migliaia con uno spaziozio vuoto (es. 2 100 ancihé 2.100), e mi sono aiutato con =destra o =sinistra.....il problema mi si pone quanto questi valori sono più alti perchè come ad esempio un valore di 12 000 non riesco a ricavare il dato corretto. (allego un file per capirci meglio).
oltre a questo primo passo, mi si pone un altra problematica ovvero quando il valore del prodotto supera i 100.000 il valore è composto nel seguente modo Es."210,5K" (senza spazio ma con la "K" finale).
come potrei risolvere secondo voi?
ho provato con ANNULLA SPAZIE E LIBERA, ma non mi pare d'aver risolto.
la query non funziona e di altro non conosco!
_________________________________________________________________
WIN 10 EXCEL 2019
(non excell/exchel/excellh/lesechel)
<---Hofinalmenteaggiustatolabarraspaziatrice---> |
|
| | Post: 2.642 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
28/07/2015 08:37 | |
In foglio collegamento cella B2=SE(DESTRA('tabella HTML'!B2;1)="K";SOSTITUISCI(SOSTITUISCI('tabella HTML'!B2;"K";"00");",";".");SOSTITUISCI('tabella HTML'!B2;CODICE(160);"."))
e trascini destra/basso Excel 2013 |
| | Post: 4.426 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
28/07/2015 09:01 | |
Ciao, l'appellativo Dei non l'avevo ancora sentito, forse "DI DIO" e più vicino di noi a loro, scherzo, ed un saluto a Raffaele
ecco una soluzione con il VBA, questa la Macro
Sub numera()
Dim r, c, cl, rng, L1, L2, L3
r = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("B2:E" & r)
For Each cl In rng
r = cl.Row
c = cl.Column
If cl <> 0 Then
cl = Replace(cl, " ", "")
cl = Replace(cl, " ", "")
If cl Like "*" & "k" Then
L1 = Len(cl)
L2 = ""
If Mid(cl, L1 - 2, 1) = "," Then
L2 = Mid(cl, 1, L1 - 1)
L3 = Right(L2, 2)
L2 = Mid(L2, 1, L1 - 3)
L2 = L2 & "000" & L3
Else
L2 = Mid(cl, 1, L1 - 1)
L2 = L2 & "000"
End If
End If
If L2 <> "" Then Cells(r, c) = CDbl(L2) Else Cells(r, c) = CDbl(cl)
End If
Next cl
Set rng = Nothing
End Sub
allego anche il file
gli spazi che vedi non sono spazi, forse sono caratteri di html od altro, come infatti dalla macro te ne accorgi che sono di 2 tipi "Replace", non so se in un futuro ce ne saranno di più, per il momento ho riscontrato solo questi, nel caso da aggiustare la macro.
una volta caricato i dati premi il pulsante ed avrai i numeri convertiti.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 44 | Registrato il: 09/10/2013
| Città: SIRACUSA | Età: 39 | Utente Junior | Office 2019 | | OFFLINE | |
|
28/07/2015 18:00 | |
Grazie a tutti e due intanto.
(SAL diciamo che non siamo tutti santi e via :) )
Raffaele : ho provato la formula che mi hai indicato ma riporta lo stesso identico valore nello stesso identico formato e quindi non funziona. possibile?
Sal : funziona egregiamente, come sempre, ma ho difficoltà grosse con il VBA. quindi se volessi sftuttare la macro in altri fogli e tabelle non so dove mettere mano (prima o poi mi ci dedicherò).
Non è che per caso puoi indicarmi una bella formulina magica così che posso lavorare da solo?
grazie come sempre _________________________________________________________________
WIN 10 EXCEL 2019
(non excell/exchel/excellh/lesechel)
<---Hofinalmenteaggiustatolabarraspaziatrice---> |
| | Post: 4.429 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
28/07/2015 21:33 | |
Ciao Ivano, non è difficile usare la macro per altre tabelle su altri fogli.
la macro è sempre la stessa basta posizionarsi sul foglio interessato e cambiare la riga
Set rng = Range("B2:E" & r)
che indica il range dove sono i numeri da convertire, nella riga dice prendi il range B2:E ultima riga occupata.
quindi ammettendo che l'elenco sia dalla A alla G, logicamente nella colonna A ci sono i nomi dei prodotti, quindi non interessa, quindi sostituisci la "E" con la "G" ed il gioco e fatto funziona fino alla lettera "G" o la lettera che vuoi, non devi modificare altro.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 46 | Registrato il: 09/10/2013
| Città: SIRACUSA | Età: 39 | Utente Junior | Office 2019 | | OFFLINE | |
|
28/07/2015 22:42 | |
si si, avevo 'smanettato' subito dopo che mi hai inviato la macro e avevo capito....purtorppo sono veramente scarso in VBA e anche queste banalità per me sono ostacoli infiniti.
caso risolto come sempre!
ringrazio nuovamente anche a Raffaele per la disponibilità _________________________________________________________________
WIN 10 EXCEL 2019
(non excell/exchel/excellh/lesechel)
<---Hofinalmenteaggiustatolabarraspaziatrice---> |
| | Post: 2.643 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
29/07/2015 12:09 | |
Ero convinto che sostituiva il carattere con un punto
Di sicuro ho bisogno solo di un paio d'occhiali (non vedere il punto su TV 40 pollici???)
Suggerisco comunque d'usare il VBA di By Sal
Comunque sono andato a vedere il motivo...
1) Ho errato il CODICE() con CODICE.CARATT()
2) in cella E11 c'è una K, OK era già fatto
3) ho notato in cella D11 che non c'è il carattere 160 mà il 32
Modificato la formula in B2=SE(DESTRA('tabella HTML'!B2;1)="K";SOSTITUISCI(SOSTITUISCI('tabella HTML'!B2;"K";"00");",";".");SE(STRINGA.ESTRAI('tabella HTML'!B2;4;1)=CODICE.CARATT(32);SOSTITUISCI('tabella HTML'!B2;CODICE.CARATT(32);".");SOSTITUISCI('tabella HTML'!B2;CODICE.CARATT(160);".")))
[Modificato da raffaele1953 29/07/2015 16:16] Excel 2013 |
|
|