PDA

Visualizza versione completa : [excel] giustificare testo all'interno della cella


gutguy
03-02-2016, 18.01.34
ciao,
vorrei giusticare il testo nella cella affinchè rientrasse interamente nella cella stessa qualora questa non sia abbastanza larga per contenere il testo stesso, ad es.

vorrei che questo
http://i.imgur.com/c5wXjuS.png

diventasse come qst
http://i.imgur.com/6Dr32hf.png

come posso fare

Alexsandra
03-02-2016, 19.19.02
Con il normale percorso di "formato celle" scegliendo poi "testo a capo" e "giustifica" non va bene? oppure vuoi una macro che esegua la formattazione in automatico?

gutguy
04-02-2016, 20.56.08
Con il normale percorso di "formato celle" scegliendo poi "testo a capo" e "giustifica" non va bene? oppure vuoi una macro che esegua la formattazione in automatico?

beh era quello che volevo, scusa la banalità, grazie mille per la tua pronta e risolutiva risposta

RunDLL
06-02-2016, 20.13.20
Giusticare mi mancava proprio.

tof63
07-02-2016, 15.00.00
Scusate la mia ignoranza (sono fermo a Excel 2003), ma con le nuove versioni la parola "allineamento" è stata ritradotta in "giustificazione"?

borgata
07-02-2016, 15.22.58
"giustificare" è un tipo di allineamento.
Il testo viene allineato sia a sinistra che a destra, modificando la distanza tra le parole (e in alcuni casi tra le lettere) quando necessario.

PS: come fa notare RunDLL, sarebbe in effetti il caso di correggere il titolo.

xilo76
07-02-2016, 15.57.02
Corretto anche nei post successivi.

RunDLL
08-02-2016, 20.07.59
ehm, è scritto anche nel messaggio, mi sa che non è un errore di battitura ma una convinzione :rotolo:
gutguy, la mia voleva essere solo una battuta, spero non te la sia presa. :)

gutguy
10-02-2016, 15.02.46
per niente, nessun problema, del resto avete fatto bene a fermi notare l'errore
poi questa nn è niente, dovresti leggere certe perle...

gutguy
15-02-2016, 18.24.14
ne aprofitto per chiedervi:


http://img.ctrlv.in/img/16/02/15/56c1faf0193ad.png


le bandiere come le tolgo in massa, perché fanno parte integrante delle colonne ma non sono per es. filtrabili, in somma non vorrei toglierle tutte a mano

Alexsandra
15-02-2016, 21.55.41
quelle sono state inserire come immagine e per toglierle devi usare una macro.

copia il codice sotto riportato in un modulo vba e con il foglio che contiene le immagini attivo la lanci

Sub img()
imgC = 0
For Each sh In ActiveSheet.Shapes
ActiveSheet.Shapes(1).Delete
imgC = imgC + 1
Next
End Sub

gutguy
16-02-2016, 10.35.00
ti ringrazio tanto ha funzionato benissimo, ti faccio i miei complimenti perché leggendo in giro qui sul forum si evince che sei davvero un mago

gutguy
20-02-2016, 19.33.57
beh ne approfitto ancora...
se volessi togliere tutti gli spazi iniziali nelle celle, solo gli spazi iniziale, non tutte quelle contenute nelle celle, cosa dovrei fare?
http://img.ctrlv.in/img/16/02/20/56c8a3176cc1d.png

per esempio malta e estonia

borgata
20-02-2016, 21.48.58
Prova così:
seleziona le celle
apri trova -> sostituisci
abilita la ricerca con espressioni regolari
nel campo trova, scrivi:
^[:space:]+
nel campo sostituisci non scrivere nulla
avvia la sostituzione e tutti gli spazi dovrebbero sparire

PS: se [:space:] non fosse supportato (dubito, ma non si sa mai), sostituiscilo con uno spazio

gutguy
21-02-2016, 11.42.49
intanto grz per la risp.
http://img.ctrlv.in/img/16/02/21/56c98632942ab.png
anche sostituiscilo con uno spazio non funziona

borgata
21-02-2016, 12.05.12
Hai abilitato la ricerca con espressioni regolari?

EDIT: notavo ora che Excel potrebbe non contemplare l'uso di espressioni regolari (RE) nella trova/sostituisci... O_o

Vabbè... al di la dell'assurdità di questa mancanza, se queste RE non saltano fuori, vediamo alcune alternative:
- Usando libreoffice/openoffice apri un nuovo foglio di Calc, ci incolli la colonna incriminata, esegui la sostituzione e riincolli la colonna corretta sul foglio excel.
In alternativa anzichè libreoffice/openoffice, per una sola colonna per volta si può utilizzare qualsiasi blocco note avanzato, per esempio notepad++.
- Usi la funzione di Excel "Sostituisci", che mi pare supporti le espressioni regolari. In questo caso hai bisogno di una colonna nuova come appoggio per effettuare l'operazione. Una volta fatta copi i valori nella colonna originale.
- Usi uno script VBA che utilizzi l'oggetto RegExp e il metodo replace. Francamente mi sembra un'esagerazione per un'operazione banale come questa, ma tant'è... visto che funziona si potrebbe usare.
La funzione somiglierebbe a qualcosa come questa:
Public Function RinuoviSpaziIniziali(PrimaCella As String, UltimaCella As String)
Dim re As New RegExp
re.Pattern = "^\s+" ' oppure "^[ \r\t\n\f]+" in RE standard "^[:space:]+"

Set MioRange = ActiveSheet.Range(PrimaCella & ":" & UltimaCella)
For Each cell In MioRange
If re.Test(cell.Value) Then
cell.Value = re.Replace(cell.value, "")
End If
Next cell
End Function

Per lanciare la funzione:
RinuoviSpaziIniziali(B1,B100)

NOTA: B1 e B100 definiscono un range di celle, sostituire con il range appropriato.

oppure, utilizzando una cella, se non sbaglio si può scrivere:
=RinuoviSpaziIniziali(B1,B100)


L'ho fatto di fretta, quindi non escludo qualche errore di sintassi o logica. In breve, testala prima di usarla sul tuo foglio!

gutguy
21-02-2016, 20.43.37
ho risolto facendo


Sub RimuoviSpazioIniziale()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Selezionare l'area in cui applicare la macro"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
Rng.Value = VBA.LTrim(Rng.Value)
Next
End Sub

borgata
21-02-2016, 21.44.04
In effetti una volta passati al VB, usare una funzione preconfezionata come trim era più semplice :p
Anche se in in realtà trim elimina gli spazi anche alla fine del testo, non solo all'inizio. Vabbè, stessa cosa alla fine.

Piuttosto continua a sembrarmi assurdo l'assenza delle RE nel trova/sostituisci di Excel, per fare cosine di questo tipo è utilissimo.

PS: hai provato qualcuna delle soluzioni che ti ho suggerito?

Alexsandra
22-02-2016, 00.36.14
... Piuttosto continua a sembrarmi assurdo l'assenza delle RE nel trova/sostituisci di Excel, per fare cosine di questo tipo è utilissimo.

No funziona invece ed è molto più pratico, era solo sbagliato il percorso di ricerca, bastava inserire lo spazio (premere barra spazio) nel campo "trova" e cliccare su sostituisci ;)

borgata
22-02-2016, 02.49.26
Non era sbagliato, l'espressione regolare era corretta.
Il problema a quanto pare è che Excel non supporta le RE nella ricerca, ma devi usare per forza il VB.
Se inserisci solo lo spazio, come dici, elimini anche gli spazi interni al testo.

gutguy
22-02-2016, 03.08.38
premesso che non ho capito bene cosa sia questo RE, qlcn mi fa un esempio pratico?
perché mi interesserebbe visto che sembra essere + pratico pure...
altra cosa, giusto per dovere di cronaca, se faccio
http://img.ctrlv.in/img/16/02/22/56ca5f8058323.png
non funge, dove sbaglio?

EDIT:

dovevo scrivere "ANNULLA.SPAZI" invece di "TRIM", ora funge...

borgata
22-02-2016, 09.49.29
Si, nella versione italiana di Excel le funzioni usate nel foglio vengono tradotte.
Stai provando quindi il secondo metodo che ti stavo suggerendo? (con il trim al posto del sostituisci)

Le RE (Regular Expressions, o Espressioni Regolari in italiano) sono una notazione che consente di eseguire manipolazione di stringhe in modo semplice e veloce. Se sei interessato ti consiglio di cercare online qualche guida e cominciare aprovare, sono molti i programmi che le utilizzano (ti consiglio notepad++ (https://notepad-plus-plus.org/) che ne fornisce un supporto completo).
Come sito di riferimento, ho trovato ben fatto questo (http://www.regular-expressions.info/).

LoryOne
22-02-2016, 13.05.06
premesso che non ho capito bene cosa sia questo RE, qlcn mi fa un esempio pratico?
perché mi interesserebbe visto che sembra essere + pratico pure...
altra cosa, giusto per dovere di cronaca, se faccio
http://img.ctrlv.in/img/16/02/22/56ca5f8058323.png
non funge, dove sbaglio?

EDIT:

dovevo scrivere "ANNULLA.SPAZI" invece di "TRIM", ora funge...

Trim[$] è una funzione di VBA, così come RTrim[$] ed LTrim[$].
L'utilizzo di '$' consente di acquisire il parametro come stringa e non come variant, quindi è più indicato per una questione di performances, anche se le prestazioni in VB lasciano a desiderare.
Le Regular Expression sono utilissime quando è necessario verificare una maschera d'immissione prima dell'acquisiione di un dato, un po meno per effettuare operazioni di replace/remove.
Le funzioni di Excel come quella che hai utilizzato, dovresti considerarle come una serie di funzioni elencate in un modulo VBA, però nascosto all'utente; Sfortuna vuole che non vengano tradotte nel corrispettivo del linguaggio del pacchetto in uso, se questo è differente, proprio perchè non presenti in quell'elenco nascosto. ;)

gutguy
24-02-2016, 18.22.56
chiamatemi rompiscatole, visto che lo sono, ma ora ho questo problema:

http://s27.postimg.org/ylokk4wkz/excel.jpg

1. vorrei togliere tutte le parentesi quadre con relativo contenuto (ad es. [4])
2. vorrei togliere tutti i separatori di migliaia formato americano (quindi le virgole, 76,334 diventerebbe 76334)
3. vorrei sostituire i seperatori decimali punto formato usa in virgola formato italiano (12.82 diventerebbe quindi 12,82)

per gli ultimi 2 punto potrei semplicemente utilizzare sostituisci ma volevo aprofittare del discorso marco...

EDIT:

1. risolto facendo trova " " e lasciando sostituisci vuoto
ma mi chiedevo se c'era anche una macro per qst
2. e 3. analogamente con sostituisci

ma mi chiedevo una macro può fare tutto?

poi ho un altro problema, come faccio sempre con una macro a convertire tutto da formato generale a formato numero?
perchè alcune righe non sono "normalizzate" allo stesso allineamento delle altre?
http://img.ctrlv.in/img/16/02/24/56cdeb98001ab.png

borgata
24-02-2016, 19.34.16
Il primo risultato si ottiene con facilità sempre con le espressioni regolari.
Cerca
\[[0-9]+\]$
Sostituisci con... niente (stringa vuota)

Da vedere poi se Excel ri conosce i valori come numeri, in caso contrario bisogna trasformarli (a mano elimini il carattere ' davanti alla cifra, con le MACRO forse c'è qualche funzione aposita o basta convertire il formato dati)

Per i punti 2 e 3, ovviamente non puoi farli in questo ordine, altrimenti perdi il riferimento a dove inizia la parte decimale.
La cosa più semplice da fare mi sembra quella di assegnare la localizzazione inglese al documento, in modo che utilizzi il separatore decimale tipico del mondo anglosassone (ossia il punto). Fai attenzione a modificare la localizzazione del solo documento, e non del programma.
Una volta fatto tutte le cifre che ora non vengono riconosciute (nelle colonne C e D nell'immagine) dovrebbero spostarsi a destra (allineamento standard per i numeri).

gutguy
24-02-2016, 19.53.22
assegnare la localizzazione inglese al documento
come faccio a cambiare la localizzazione lingua solo per quel doc?
Facendo sta cosa risolverei anche il prob sotto?
http://img.ctrlv.in/img/16/02/24/56cdeb98001ab.png

borgata
24-02-2016, 20.13.24
Non avendo office sotto mano non so dirti come fare, ma sicuramente con una ricerchina in rete lo trovi subito.

Quale sarebbe esattamente il problema sotto?

gutguy
24-02-2016, 23.16.55
Quale sarebbe esattamente il problema sotto
intendevo sempl qst->http://img.ctrlv.in/img/16/02/24/56cdeb98001ab.png

borgata
25-02-2016, 01.17.23
...e io intendevo che guardando l'immagine non avevo capito a quale problema ti riferissi! :D
Di che si tratta esattamente?

Alexsandra
25-02-2016, 11.27.10
correggimi se sbaglio

la prima colonna con numeri (123, 76,334 etc..) è la N° 3 (C) ?
in questa colonna vuoi togliere il carattere [4], togliere il separatore dei decimali (la virgola) e allineare a Dx

nella colonna n° 4 (12.82, 7.74 etc..) vuoi cambiare separatore dei decimali dal punto alla virgola e allineare a Dx
nella colonna n° 5 (89.82, 238.53 etc..) ..... stesse operazioni della n° 4

PS: ho notato però che nella colonna n° 3 mi sembra che ci sia un carattere di separazione strano, è l'apostrofo???

borgata
25-02-2016, 11.33.47
Si, pare abbia usato un apostrofo come separatore per le migliaia.
Bisogna però capire se si tratta di un carattere di formattazione su un dato numerico o un carattere normale su un dato stringa.

gutguy
25-02-2016, 19.03.50
intanto grazie a tutti per il supporto, non sapete quanti dubbi mi state togliendo, vi ringrazio anche per la pazienza
non ho capito bene a cosa vi riferite negli ultimi due post, ci stiamo un po' rincorrendo...
detto ciò riformulo sperando di essere più chiaro stavolta

http://tinyurl.com/hx5v2ux

i dati li ho presi da un sito americano che evidentemente utilizza la propria formattazione, diversa dalla ns italiana (quindi punti al posto di virgole per i decimali ad. es.), visto che mi sembra un buon aproccio, prima di incollare i dati, chiedovo a borgata di dirmi come fare a cambiare la localizzazione della lingua solo per questo foglio assegnare la localizzazione inglese al documento e non a tutto il programma excel

1. vorrei uniformare A1 a A2 (togliendo quindi l'hyperlink)
2. togliere tutte le parentesi quadre e loro contenuto (quindi B4 diventerebbe 1751868)
3. togliere tutti i segni di sepratore di migliaia americani, togliendo quindi le virgole dai numeri (B5 diventerebbe quindi 1396000)
4. convertire i separatori decimali americani da punti e virgola in stile italiano (quindi E1 diventa 343,43)
5. uniformare le posizioni decimali a 2 (E1 diventa 2323,50)
6. Togliere eventuale testo doppio (A3 diventa quindi China)
7. uniformare le miglialia (B16 è in realtà 454000)
8. uniformare gli allineamenti (C30 deve essere come C27)
9. togliere tutti gli spazi iniziali e finali nelle celle (ma qst già lo so fare ora)

borgata
25-02-2016, 19.56.40
il punto 1 lo risolvi a mano, tanto il link è solo in A1
i punti 2 e 9 li sistemi con un'espressione regolare come dicevo prima
i punti 3-5 e 7 li risolvi creando adeguati stili di cella e localizzando il documento da en a it
il punto 6 è più complesso a va fatto programmaticamente (ma forse anche qui ce la caviamo con le espressioni regolari... devo vedere)
EDIT: si, è fattibile con le espressioni regolari. Se le ripetizioni sono abbastanza semplici, come mi pare siano, puoi usare (\b\S+\b)\s+\b\1\b nel campo cerca e \1 nel campo sostituisci (se usi libreoffice/openoffice usa $1 al posto di \1 in sostituisci).
Il punto 8 è dovuto al fatto che in un caso il formato numerico viene risconosciuto, nell'altro no (e quindi viene trattato come stringa)

Alexsandra
26-02-2016, 00.27.38
prova con questa macro, manca ancora qualcosa, intanto vedi come va.

Sub prova1()
Sheets("Foglio1").Activate
'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
End If
Next
End Sub

gutguy
28-02-2016, 09.45.15
prova con questa macro, manca ancora qualcosa, intanto vedi come va.

va benissimo ti ringrazio tanto

questo è il risultato

http://img.ctrlv.in/img/16/02/28/56d2a3e742793.png

l'ho messo in immagine perché nel sito sotto viene utilizzata la formattazione americana di default quindi il risultato è inatteso, in realtà nella mia vers ita di excel va benissimo

https://tinyurl.com/z2wnel7

China è rimasto doppio, ma certo non mi posso lamentare

ultima cosa, come faccio ad integrare se possibile il trim?

[QUOTE=gutguy;1708348]


Sub RimuoviSpazioIniziale()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Selezionare l'area in cui applicare la macro"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
Rng.Value = VBA.LTrim(Rng.Value)
Next
End Sub

Alexsandra
28-02-2016, 10.26.07
China è rimasto doppio, ma certo non mi posso lamentare :Oh-yea::fiufiu:

ultima cosa, come faccio ad integrare se possibile il trim?

usa questo codice

Sub prova1()
Sheets("Foglio1").Activate
'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
'togliere gli spazi
Trim (cell.Text)
End If
Next
End Sub

gutguy
28-02-2016, 12.17.14
grazie mille...
chissà se Deleting Duplicate Text Values (http://excel.tips.net/T002430_Deleting_Duplicate_Text_Values.html) può essere d'aiuto

EDIT:
non vorrei sembrare un rompiscatole o colui che si approfitta degli altri, ma Finland dovrebbe essere 454'000 (o 454000 senza separatore migliaia) e non 454
mi sto già autoinfligido (anche se penso che qst parola non esista in ita essendo spagnolo) al momento

borgata
28-02-2016, 12.31.13
Puoi sempre aggiungere alla macro l'espressione regolare che ti ho passato prima, che i duplicati di quel tipo dovrebbe eliminarli senza problemi.

Piuttosto non ho ben capito se ti serva una pulizia una tantum oppure una pulizia da eseguire ciclicamente, per esempio ogni volta che aggiorni i dati.

gutguy
28-02-2016, 12.47.11
Piuttosto non ho ben capito se ti serva una pulizia una tantum oppure una pulizia da eseguire ciclicamente, per esempio ogni volta che aggiorni i dati.
sono onesto non ci ho pensato proprio, per ciclo intendi ogni tot tempo?

borgata
28-02-2016, 13.31.02
Ogni tot tempo, oppure ogni volta che si presenta una data situazione (come nell'esempio di prima, ogni volta che aggiorni i dati).
Insomma, devi sistemare il documento ora e poi sei a posto, oppure dovrai ripetere più volte l'operazione?

Alexsandra
28-02-2016, 19.36.37
per togliere i doppioni nella cella della colonna A prova questo codice

Sub pippo()

Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

funziona con 1 spazio tra le 2 stringhe

borgata
28-02-2016, 21.34.51
@Alexandra
Sei anche tu refrattaria alle Espressioni Regolari? :D
Quella che avevo proposto inizialmente funziona bene, è semplice da inserire nel codice e gestisce i diversi tipi di spaziature.

Alexsandra
29-02-2016, 00.00.36
No non disdegno di usare le RE oppure la normale formulistica quando abbiamo un solo episodio da trattare, anzi risulta molto più comodo e veloce.

La macro è utile quando si hanno da ripetere le stesse operazioni varie volte, ma ...... a volte è più forte di me :D e uso il vba.

nell'ultimo caso si doveva per forza usare il vba, come avevi preventivamente accennato tu, in quanto si doveva cercare lo spazio, estrarre le due stringhe e verificare se erano uguali etc... però tutto il resto era una normale routine per una RE :Oh-yea:

borgata
29-02-2016, 00.16.14
Si si, io intendevo usare le RE con VBA, dato che Excel non permette di usarle "al volo" con il trova/sostituisci, come invece avrei fatto con libre/openoffice. :)

Anche io all'inizio avevo valutato che fosse meglio agire programmaticamente per trovare le parole duplicate, poi ho visto che poteva essere fatto facilmente con le RE e quindi ho suggerito una RE apposita per farlo (vedi qualche post sopra).

LoryOne
29-02-2016, 12.04.51
per togliere i doppioni nella cella della colonna A prova questo codice

Sub pippo()

Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

funziona con 1 spazio tra le 2 stringhe

Troppo codice; Esiste la funzione Replace.


Function Rimpiazzamelo(ByVal S As String) As String
Dim Ss As String: Dim Pos As Long

Ss = LTrim$(S): Pos = InStr(Ss, ChrW(32))
If Pos Then Rimpiazzamelo = Replace$(Ss, ChrW(32) & Left$(Ss, Pos - 1), vbNullChar)
End Function

LoryOne
29-02-2016, 12.12.00
Anche io all'inizio avevo valutato che fosse meglio agire programmaticamente per trovare le parole duplicate, poi ho visto che poteva essere fatto facilmente con le RE e quindi ho suggerito una RE apposita per farlo (vedi qualche post sopra).

Si, meglio sotto questo aspetto: L'espressione regolare verifica da sola quale sia la sequenza di caratteri ripetuti, ossia la stringa in oggetto, senza doverla necessariamente specificare

Alexsandra
29-02-2016, 21.32.58
Lo hai provato?

LoryOne
01-03-2016, 18.19.50
Se ti riferisci alle Regular Expression, non le ho provate nelle macro, ma qui dicono funzionino alla grande.
https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops
Se ti riferisci al mio script, funziona con riserva, nel senso che da una stringa " China China China" potrebbe ricavare una stringa "China ", dove quegli spazi non sono spazi, bensì caratteri nulli non presi in considerazione da un'eventuale RTrim$
Se invece lo script fosse questo:

Function Rimpiazzamelo(ByVal S As String) As String
Dim Ss As String: Dim Pos As Long

Ss = LTrim$(S): Pos = InStr(Ss, ChrW(32))
If Pos Then
Rimpiazzamelo = RTrim$(Replace$(Ss, ChrW(32) & Left$(Ss, Pos - 1), vbNullString))
Else
Rimpiazzamelo = Ss
End If
End Function

La stringa " China China China" restituirebbe "China"

gutguy
04-03-2016, 14.22.17
intanto ringrazio tutti per le risposte, e mi scuso per il ritardo ma prob di lavoro e connessione ballerina mi hanno impedito
di rispondere prima...
ero rimasto al seguente codice del post #36 (http://forum.wintricks.it/showpost.php?p=1708483&postcount=36)


Sub prova1()
Sheets("Foglio1").Activate
'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
'togliere gli spazi
Trim (cell.Text)
End If
Next
End Sub


non ho capito ora se la macro per togliere i doppioni del post #41 (http://forum.wintricks.it/showpost.php?p=1708490&postcount=41)
va lanciata a parte o se eventualmente è possibile integrarla



Sub pippo()

Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub



per qnt riguarda il post #40 (http://forum.wintricks.it/showpost.php?p=1708487&postcount=40)
vorrei applicarla ogni volta che si presenta una data situazione. cioè ogni volta che aggiorno i dati

ultima cosa, stavolta in word, come faccio ad appendere testo ad ogni riga?
ho provato una RE da qst (http://www.msofficeforums.com/word/2854-add-text-beginning-ending-each-line-word.html) sito facendo trova "^p" (senza apici) e sostituisci con "^p testo" (senza apici)
ma mi sbaglia la prima e ultima riga...
esiste una macro eventualmente?

Alexsandra
05-03-2016, 09.13.37
La puoi integrare così


Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

Sheets("Foglio1").Activate
'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
'togliere gli spazi
Trim (cell.Text)
End If
Next

ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

gutguy
10-03-2016, 11.33.18
La puoi integrare così


Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

Sheets("Foglio1").Activate
'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
'togliere gli spazi
Trim (cell.Text)
End If
Next

ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub




mi da

http://img.ctrlv.in/img/16/03/10/56e13ee4e4405.png

LoryOne
10-03-2016, 13.20.21
...e cliccando su Debug, a quale riga si ferma l'esecuzione ?

Alexsandra
11-03-2016, 09.13.16
la macro gira, è probabile che tu non abbia "Foglio 1" oppure hai un altro nome

gutguy
11-03-2016, 10.42.02
...e cliccando su Debug, a quale riga si ferma l'esecuzione ?
c'hai ragione...mi scuso anche con alexandra, mi sono sbagliato io, avevo lanciato la macro per errore in un altro foglio:timid:
ecco come appare il foglio dopo aver eseguito la macro:

http://tinyurl.com/glr5ofy

detto ciò non mi da nessun errore, solo non toglie gli spazi iniziali...
e finland dovrebbe essere 454000 e non 454...
altra cosa, se lo lancio su un altro foglio (potrei averne bisogno in futuro), cosa devo fare? C'è modo di abilitare una selezione dell'area in cui deve operare quando si lancia la macro?
un po' come il seguente:
http://img.ctrlv.in/img/16/03/11/56e27f0bb0f5e.png

ancora grz per la pazienza

Alexsandra
11-03-2016, 18.31.24
C'è modo di abilitare una selezione dell'area in cui deve operare quando si lancia la macro?
al momento no, l'area se la cerca il codice (inizio e fine righe) partendo dalla prima riga e fino alla riga che trova scritta.

per finland è un del pasticcio, nel senso che non sò come dire al codice cosa debba fare in quella cella specifica ??? ci penso

per il resto il codice diventa questo

Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
End If
Next

'togliere gli spazi
Columns(1).Replace What:=" ", Replacement:=""
'togliere doppioni nella cella
ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

così puoi lanciare la macro in qualsiasi foglio

Alexsandra
11-03-2016, 22.04.56
ho sbagliato :fiufiu:
col codice che ti ho messo sopra togli tutti gli spazi, anche quelli tra 2 stringhe.

questo è quello giusto
Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(2).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("B:E").HorizontalAlignment = xlRight
' formattazione generale
Columns("B:C").NumberFormat = "General"
' 2 decimali finali
Columns("E").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
End If
Next

'togliere gli spazi
For Each oCell In Range(Cells(1, "A"), Cells(Rows.Count, 1).End(xlUp))
With oCell
.Value = Trim(.Value)
End With
Next oCell

'togliere doppioni nella cella
ultimaC = Range("A1").End(xlDown).Address
For Each Ccol In Range("A2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

gutguy
15-03-2016, 16.49.35
ti ringrazio tanto...
ecco il risultato della macro (http://forum.wintricks.it/showpost.php?p=1708641&postcount=56)

http://tinyurl.com/zq5yqdk

penso non si possa far nulla per finland:dntknw:

una cosa, se volessi lanciare la tua (http://forum.wintricks.it/showpost.php?p=1708641&postcount=56) macro sulla scheda 2 di qst (http://tinyurl.com/hpwcd55) foglio cosa dovrei fare?
perché se lo lancio così non va...

Alexsandra
15-03-2016, 18.28.19
penso non si possa far nulla per finland:dntknw:
un sistema ci sarebbe, lasciami fare delle prove.
In sostanza si dovrebbe trasformarlo in migliaia, cioè aggiungere 3 zeri ???

una cosa, se volessi lanciare la tua (http://forum.wintricks.it/showpost.php?p=1708641&postcount=56) macro sulla scheda 2 di qst (http://tinyurl.com/hpwcd55) foglio cosa dovrei fare?
perché se lo lancio così non va...
non va perchè le colonne non sono uguali, cancella la colonna 1 e lancia la macro, vedrai che funziona

gutguy
15-03-2016, 18.36.36
non ti preoccupare, anzi scusami piuttosto se ti metto fretta, non è mia intenzione...

In sostanza si dovrebbe trasformarlo in migliaia, cioè aggiungere 3 zeri ???


si aggiungere 3 zeri, quando l'ho copiato da un'origine americana era in migliaia evidentemente formattato alla loro maniera, quando l'ho incollato i tre zeri per un motivo che non conosco sono spariti.
dovrebbe diventare così:
http://img.ctrlv.in/img/16/03/15/56e8395fa8c79.png

Alexsandra
16-03-2016, 10.56.50
per finland si potrebbe fare una cosa del genere:
fatta la conversione della colonna possiamo leggere da quante cifre è composta.
se il n° di cifre è inferiore a 4 aggiungiamo 3 zeri

non è un procedimento tanto affidabile, ma è l'unico che mi è venuto in mente.

borgata
16-03-2016, 12.08.02
Bisognerebbe provere a risolvere il problema alla fonte, ossia mantenere la giusta formattazione e convertire adeguatamente il dato.

Per capire come procedere bisogna però capire come vengono acquisiti i dati. Finora pensavo che venissero copiati tutti insieme da un'unica fonte e poi incollati nel foglio, dove era necessario fare qualche aggiustamento.
Ma se in questo caso c'è un solo dato che presenta questo problema, ho idea che non sia così.
Come vengono acquisiti i dati, quindi?

Alexsandra
16-03-2016, 21.49.04
quella sarebbe la soluzione migliore

gutguy
20-03-2016, 12.06.55
Come vengono acquisiti i dati, quindi?
da un semplice copia ed incolla.
ho un foglio txt (http://tinyurl.com/jh47ps9) da cui seleziono tutto il testo e faccio
http://img.ctrlv.in/img/16/03/20/56ee5b7dc7547.png

altra cosa, stavo facendo ora una prova, so già che ho fatto qst domanda, ma lanciando la macro in un altro foglio non funge, cosa posso fare?

borgata
20-03-2016, 12.18.42
E i dati nel foglio txt da dove arrivano?
Perchè se arrivano dalla stessa fonte, mi sembra strano che i formati all'interno del foglio siano così eterogenei.

gutguy
20-03-2016, 12.50.56
E i dati nel foglio txt da dove arrivano?
non ho la fonte ufficiale poiché i fogli txt mi vengono passati dall'amministrazione, però facendo una sorta di reverse engineering (http://tinyurl.com/zqvh2on) parebbe provenire da qui (https://en.wikipedia.org/wiki/List_of_countries_by_road_network_size)

Alexsandra
20-03-2016, 21.19.33
....altra cosa, stavo facendo ora una prova, so già che ho fatto qst domanda, ma lanciando la macro in un altro foglio non funge, cosa posso fare?

non hai lo stesso intervallo di colonne, cancella la colonna A (dovresti avere dei numeri progressivi) oppure si modifica la macro e teniamo SEMPRE come prima colonna il numero progressivo.
scegli tu

gutguy
21-03-2016, 11.49.39
teniamo SEMPRE come prima colonna il numero progressivo.


devi scusarmi ma io non sono certo afferrato in materia come te, non ho capito bene cosa intendi...
non si potrebbe modificare la macro affinché agisca su tutta l'area del foglio?
oppure che richieda l'area in cui operare quando lo si lancia (mi sembra di ricordare che cmq qst opzione non è contemplabile)

LoryOne
21-03-2016, 12.35.07
richieda l'area in cui operare quando lo si lancia (mi sembra di ricordare che cmq qst opzione non è contemplabile)
Certo che si, ma cio implica anche che le operazioni che compie siano strettamente legate alla tipologia di dato che deve gestire in ogni colonna appartenente al range: Puoi specificare dei parametri nella chamata alla sub, sapendo che il primo parametro è un range sul quale avviene una cosa, sul secondo un'altra e via di seguito...

LoryOne
21-03-2016, 13.10.14
Oppure, inizi a pensare in altro modo:
Prima sviluppi funzioni/Sub specifiche per ogni colonna, poi ti crei un file che contiene le istruzioni da eseguire sequenzialmente e che dai in pasto alla macro, es:

#Rimuove duplicati: NoDup
#Rimpiazza: Repl(Cosa!Cosa1)
#Cambia Formato: Format(Formato!Tipo)
#Cambia allineam: Align(Allineamento)

@A1:A22>Repl( !),Repl( ! ),Format(0.00!General),Repl(.!,),NoDup,Align(4)
@B1:C44>Repl( !),Align(3),NoDup
@...

In questo modo, sei tu che imponi cosa deve fare in base alla tipologia di dato che trovi nelle tabelle importate e lo lasci lavorare fino a quando non ha raggiunto l'ultimo range.
Se ti servono altre istruzioni, le crei e le aggiungi in coda.

Alexsandra
21-03-2016, 16.07.38
Il problema è che in origine c'era un foglio che come prima colonna aveva il nome della nazione e su quelle impostazioni è stata sviluppata la macro.
In seguito hai detto di prelevare i dati da una pagina web e incollarli in un txt in cui c'era come prima colonna un numero progressivo.

con questa differenza la macro non trova più i dati che cerca.
ti ho modificato la macro tenendo presente di queste modifiche, cioè come prima colonna il numero progressivo.

Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(3).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("C:F").HorizontalAlignment = xlRight
' formattazione generale
Columns("C:D").NumberFormat = "General"
' 2 decimali finali
Columns("F").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
End If
Next

'togliere gli spazi
For Each oCell In Range(Cells(1, "B"), Cells(Rows.Count, 1).End(xlUp))
With oCell
.Value = Trim(.Value)
End With
Next oCell

'togliere doppioni nella cella
ultimaC = Range("B1").End(xlDown).Address
For Each Ccol In Range("B2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

funziona su qualsiasi foglio indipendentemente dal nome e cerca da sola l'inizio dei dati e la loro fine per scorrere tutta la tabella.
provala e fai sapere

gutguy
07-04-2016, 20.10.07
[SPOILER]
Sub prova1()
Dim ultimaC, Mstringa As String
Dim Ccol As Range
Dim Pspazio As Integer

'togliere Hyperlinks
Cells.Hyperlinks.Delete
'togliere il carattere [4]
Columns(3).Replace What:=" ", Replacement:=""
'allineare a Dx
Columns("C:F").HorizontalAlignment = xlRight
' formattazione generale
Columns("C:D").NumberFormat = "General"
' 2 decimali finali
Columns("F").NumberFormat = "0.00"
'cambiare il punto con le virgole
For Each cell In ActiveSheet.UsedRange
If InStr(1, cell.Text, ".") > 0 Then
cell.Value = CDbl(Val(cell.Text))
End If
Next

'togliere gli spazi
For Each oCell In Range(Cells(1, "B"), Cells(Rows.Count, 1).End(xlUp))
With oCell
.Value = Trim(.Value)
End With
Next oCell

'togliere doppioni nella cella
ultimaC = Range("B1").End(xlDown).Address
For Each Ccol In Range("B2:" & ultimaC)
Mstringa = Ccol
Pspazio = InStrRev(Mstringa, " ", -1)
If Pspazio <> 0 Then
k = Left(Mstringa, Pspazio - 1)
k1 = Mid(Mstringa, Pspazio + 1)
If k = k1 Then
Ccol = k
End If
Else
End If
Next
End Sub

[SPOILER]
funziona su qualsiasi foglio indipendentemente dal nome e cerca da sola l'inizio dei dati e la loro fine per scorrere tutta la tabella.
provala e fai sapere
ti ringrazio tanto
ho però ancora qlc problemino come vedi
prima: http://tinyurl.com/zobxqlp
dopo: http://tinyurl.com/zujuggs
ti chiedevo anche se la macro toglieva le immagini...
non vorrei apparire come un rompiscatole:timid:

Alexsandra
07-04-2016, 21.26.29
le immagini si possono togliere, ma non capisco che problemi hai ancora, non colgo la differenza tra i 2 file che hai postato.

meglio se fai un riassunto :)

gutguy
18-04-2016, 20.28.17
non colgo la differenza tra i 2 file che hai postato
mi scuso se non sono stato chiaro e rinnovo il ringraziamento, la differenza ad es. è la colonna F dove si vedono degli zeri, e il separatore di migliaia è ancora il punto anziché l'apostrofo o anche nulla è indifferente per me anche perché si può impostare dopo col formatohttp://i.snag.gy/uI1jI.jpg

Alexsandra
18-04-2016, 21.19.31
Secondo me hai fatto un po' di confusione con i file
nel tuo post N° 71 (http://forum.wintricks.it/showpost.php?p=1708982&postcount=71) hai allegato 2 file etichettandoli come prima e dopo l'esecuzione della macro, però l'unica differenza che c'è tra i 2 file è della sola colonna F.

In questa colonna abbiamo impostato una formattazione numerica con 2 decimali, ma in effetti contiene del testo, (a che serve il formato numerico con 2 decimali??) in ogni caso dopo l'esecuzione della macro c'è la virgola come separatore.(perchè abbiamo convertito in testo in numero)

Ho scaricato i tuoi 2 file e copiato le colonne in un file unico per confrontarle.
https://lh3.googleusercontent.com/-FtlEgK530f8/VxUj9wp6IsI/AAAAAAAACus/Dc4VVS7V7pkgxJVSJ4FuOxLFTPKMafp0wCCo/s640-Ic42/11.jpg

aumentando lo zoom si vede che il separatore virgola c'è

https://lh3.googleusercontent.com/-3R2IJPLC_vs/VxUj9qTAEGI/AAAAAAAACuo/uDiTaUsbDOgdVfi5lIlhcuBMbbZIi6HLgCCo/s640-Ic42/22.jpg

per gli spazi vuoti della colonna F .... non c'è niente in quelle righe anche prima dell'esecuzione della macro (sono le celle in blu).
Non so, ma credo che devi fare un controllo dei file su cui lanci la macro, poi se c'è da modificare qualche colonna non ci sono problemi, l'importante è sapere dove intervenire.

gutguy
20-04-2016, 19.41.45
penso tu abbia ragione, in effetti penso che non mi sono riuscito a spiegare bene
In questa colonna abbiamo impostato una formattazione numerica con 2 decimali, ma in effetti contiene del testo, (a che serve il formato numerico con 2 decimali??) in ogni caso dopo l'esecuzione della macro c'è la virgola come separatore.(perchè abbiamo convertito in testo in numero)
in effetti in quella colonna c'è del testo anziché del numero perché io pensavo la macro convertisse il separatore migliaia e quello decimale indipendentemente dalla colonna da quello che scrivi ora sembrerebbe non essere così, in effetti può capitare che una colonna un tempo ospiti testo un altro numero, non è detto, a sto punto ti chiedo dove devo agire per dire alla macro su quale colonna convertire il formato numerico ignorando tale funzione nel caso ci sia tel testo invece

Alexsandra
21-04-2016, 18.03.14
...in effetti in quella colonna c'è del testo anziché del numero perché io pensavo la macro convertisse il separatore migliaia e quello decimale indipendentemente dalla colonna da quello che scrivi ora sembrerebbe non essere così, in effetti può capitare che una colonna un tempo ospiti testo un altro numero...

Ma infatti la macro fà già questo.
se trova del testo lo converte in numero decimale con separatore decimale con la virgola.

Leggendo quello che hai scritto mi sembrava fosse un errore, non ricordavo che lo avevi richiesto :)

gutguy
21-04-2016, 20.42.23
ma come posso fare allora, come vedi la colonna notes conteneva del trsto ora dopo la macro contiene del numero, come posso fare? vorrei che rimanesse il testo, io non so se mi riesco a spiegare
non c'entra nulla, ma come faccio ad utilizzare la seguente formla in excel?

https://upload.wikimedia.org/math/2/a/7/2a746b5eaf83fc352d09fac23637b5f9.png

xilo76
21-04-2016, 21.33.58
non c'entra nulla, ma come faccio ad utilizzare la seguente formla in excel?https://upload.wikimedia.org/math/2/a/7/2a746b5eaf83fc352d09fac23637b5f9.png=13.12+0.6215* Ta+(0.3965*Ta-11.37)*POWER(V,0.16)Se la preferisci più chiara, aggiungi le parentesi e gli spazi:=13.12 + (0.6215*Ta) + (((0.3965*Ta) - 11.37) * (POWER(V,0.16)))Ovviamente, Ta e V devono avere una loro propria casella (e quindi sostituiti con le relative caselle), a meno che non siano numeri fissi costanti.
Se usassi excel in italiano, forse i punti andrebbero sostituiti con le virgole e la funzione power potrebbe chiamarsi in un altro modo, ed eventualmente il separatore VIRGOLA, dentro la funzione POWER, potrebbe essere da sostituire con il PUNTO E VIRGOLA (ma sto tirando a indovinare).

Alexsandra
21-04-2016, 23.40.04
.... Se usassi excel in italiano, forse i punti andrebbero sostituiti con le virgole e la funzione power potrebbe chiamarsi in un altro modo, ed eventualmente il separatore VIRGOLA, dentro la funzione POWER, potrebbe essere da sostituire con il PUNTO E VIRGOLA (ma sto tirando a indovinare).

E' esatto quello che dici, la funzione Power si chiama proprio così ed il separatore è una virgola.

Comunque, formula a parte, sarebbe opportuno fare un riepilogo su come funziona la macro, tanto per escludere malfunzionamenti o operazioni errate. Il codice fa queste operazioni

1) Toglie i collegamenti(Link) da tutte le celle
2) Toglie il carattere [4] dalla colonna C
3) Imposta l'allineamento a Dx nelle colonne C,D,E,F
4) Formatta le celle in "Generale" nelle colonne C,D
5) Formatta la colonna F in numerico con 2 decimali fissi
6) Cambia il separatore punto con la virgola in tutte le celle
7) Toglie gli spazi iniziali nelle celle delle colonne A,B
8) Toglie i doppioni nelle celle della colonna B

Oltre a questo cosa dovrebbe fare?
Nella colonna F come deve comportarsi la macro?

Edit:
Ho sbagliato, mi correggo
La funzione Power, con Excel in Italiano si chiama Potenza ed il separatore è il punto e virgola. per esempio se in A1 abbiamo il valore 4 possiamo scrivere

=POTENZA(A1;2)

e restituisce il valore 16

xilo76
22-04-2016, 00.03.21
Siccome noi usiamo la virgola per i decimali, il separatore doveva essere diverso per forza. ;)
L'ho intuito dato che noi italiani siamo sempre diversi dagli inglesi... Ma perché non ci adeguiamo? :wall:
Noi potremmo prenderci il punto per i decimali e loro potrebbero finalmente prendersi i litri, i chilogrammi, ecc, ecc!:rotfl:

Alexsandra
22-04-2016, 00.07.21
Mah ... è un mistero.

comunque è un aspetto un po' ambiguo di excel, i comandi in vba sono in inglese diverse formule sono in inglese, ma questa ...

LoryOne
22-04-2016, 12.01.01
L'elevazione a potenza in VB/VBA è il carattere '^'


Twc=13.12+0,6215*Ta-11.37*V^0.16+0.3965*Ta*V^0.16


Ora:
Una cella possiede due proprietà: una .text ed una .value
Se converti in valore il testo "12,35" (Ossia variabile=Val(variabile)), il valore non sarà 12.35.
Se converti in valore il testo "12.35", il valore sarà esattamente 12.35

Siccome Excel considera cio che è presente in cella come un valore Variant * (ossia un qualunque valore che può essere testo o numero), i progettisti hanno dovuto imporre un metodo interpretativo dei contenuti: La formattazione, ad esempio.
In VB/VBA puro DOVRAI SEMPRE avere a che fare con valori numerici sempre identificati con valore intero.valore decimale e stringhe di testo.

In VBA, tu hai la possibilità di ottenere identico valore di Twc secondo la formula sopra riportata, oppure invocando direttamente:


Cella Twc=13.12+0.6215*Cella Ta-11.37*POTENZA(Cella V;0.16)+0.3965*Cella Ta*POTENZA(Cella V;0.16)


* ed acquisisce l'uno o l'altra tipologia nel momento stesso in cui lo s'invoca come parametro in una formula/funzione/sub procedure in funzione della tipologia di dato che la formula/funzione restituisce, errori runtime/interpretativi inclusi

xilo76
22-04-2016, 16.11.40
Sostituendo la funzione power con ^, come dice LoryOne, la formula può diventare:=13.12+0.6215*Ta+V^0.16(0.3965*Ta-11.37)Con le virgole se usi excel in italiano:=13,12+0,6215*Ta+V^0,16(0,3965*Ta-11,37)Direi che ora hai abbastanza scelta. :)

tof63
22-04-2016, 21.55.11
Siccome noi usiamo la virgola per i decimali, il separatore doveva essere diverso per forza. ;)
L'ho intuito dato che noi italiani siamo sempre diversi dagli inglesi... Ma perché non ci adeguiamo? :wall:
Noi potremmo prenderci il punto per i decimali e loro potrebbero finalmente prendersi i litri, i chilogrammi, ecc, ecc!:rotfl:
Con Windows 7 (e Windows XP - non so con Windows 8 e 10 perchè non li ho mai usati, ma penso che sia egualmente possibile) è sufficiente selezionare:
- Pannello di controllo
- Orologio e opzioni internazionali
- Paese e lingua
nel primo tab "Formati" cliccando su "Impostazioni aggiuntive..." (in basso a destra) compare la scheda Personalizzazione formato in cui ci si può sbizzarrire impostando a piacere i separatori, la valuta, il formato di data e ora, pur mantenendo la lingua originale.

Puoi provare, ad esempio, a fare queste modifiche (da notare che in Simbolo raggruppamento cifre è inserito uno spazio):

http://tof63.magix.net/public/misc/Win7-personalizza-formato.jpg

Apri poi un foglio Excel e vedrai che, magicamente, le virgole sono diventate punti, i punti sono diventati spazi e i punti e virgola delle formule sono diventati virgole.

Per tornare alla situazione preesistente (o se ti senti incasinato) è sufficiente premere su pulsante Reimposta nella stessa scheda in basso a destra.

xilo76
22-04-2016, 22.43.57
Sì, ma il punto è che ci dovrebbe essere un sistema internazionale che dovrebbe essere stato deciso dalla maggioranza dei paesi decenni fa e che non è stato calcolato da nessuno (noi compresi). :)