Previous page | 1 | Next page
Facebook  

Estrarre parole da una frase

Last Update: 4/15/2019 6:11 PM
Author
Print | Email Notification    
Post: 3,725
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/13/2019 1:19 PM
 
Modify
 
Delete
 
Quote

Ciao a tutti, non riesco creare una formula (preferirei il VBA)
In colonna A = Lista delle Nazioni
In colonna B = Nazione Cognome Nome
Quale modo migliore per togliere la nazione ed ottenere solo Cognome Nome?
In F2, applico il metodo (1 parola) e funziona
In F3, applico il metodo (1 parola + 2 parola) SINISTRA(B3;RICERCA("@";SOSTITUISCI(B3;" ";"@";2))-1) e và in errore

Conoscete un metodo migliore senza fare una formula kilometrica?
Grazie mille
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Tematiche delicate in 100 paroleEFPparole6/19/2019 11:37 AM by Alessandro Ma Anche No
Giri settimanali/Spakkakilometri 2019 DMC - Ducati Monster Clubuna6/18/2019 12:02 PM by Red695
Ricerca parole del Forum su googleAnkie & Friends - L&#...parole6/16/2019 10:56 AM by anklelock89
Post: 1,240
Registered in: 6/27/2011
Veteran User
excel 2007
OFFLINE
4/13/2019 1:46 PM
 
Modify
 
Delete
 
Quote

ciao a tutti [SM=x423053]
ciao Raffaele

dai un'occhiata se ti va bne questa
vb
Sub nome_cognome()
Dim spazio As Integer
Dim lunghezza as Integer
spazio = InStr(Cells(12, 2), " ") 
lunghezza = Len(Cells(12, 2))
Cells(12, 6).Value = Right(Cells(12, 2), lunghezza - spazio)

End Sub


ciao
Frank
[Edited by tanimon 4/13/2019 1:48 PM]
Excel 2007

1 - Per "prodotti finiti", ricordo l'esistenza di apposite Software House a pagamento. Questo è un Forum
2 per cortesia, leggi questa e questa discussione.
3 - allega SUL FORUM un file di esempio, chi ti vuole aiutare risparmia tempo, e tu forse hai una soluzione prima di quello che ti aspetti :-)
Usa siti di hosting SOLO in estrema necessità: in caso il server del forum abbia problemi.
4 - Ricordati di condividere le soluzioni che trovi da solo: potrebbero essere utili anche per le persone a cui chiedi aiuto.
Post: 2,128
Registered in: 3/21/2008
Location: LOCATE VARESINO
Age: 71
Veteran User
2007 / 13
OFFLINE
4/13/2019 2:49 PM
 
Modify
 
Delete
 
Quote

ciao

una UDF da inserire in un modulo


Option Explicit
Function ToglieTesto(ByVal Nazioni As Range, ByVal CogNom As Range) As String
Dim Stringa As String
Dim NomeNaz As Variant
For Each NomeNaz In Nazioni
If InStr(1, CogNom, NomeNaz, 0) > 0 Then
Stringa = Trim(Replace(CogNom, NomeNaz, ""))
End If
Next
ToglieTesto = Stringa
End Function



utilizzo in base al tuo file
=toglietesto($A$2:$A$12;B2)

riallego il tuo file
Ciao da locate
excel 2007 / 13
Post: 17
Registered in: 10/15/2017
Location: SAN VITO AL TORRE
Age: 53
Junior User
Excel online
OFFLINE
4/13/2019 3:52 PM
 
Modify
 
Delete
 
Quote

Buondì, la soluzione con una formula potrebbe essere

=ANNULLA.SPAZI(SOSTITUISCI(B2;INDICE($A$2:$A$12;CONFRONTA(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(B2;" ";RIPETI(" ";100));1;100));$A$2:$A$12;0));""))
Post: 3,725
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/13/2019 3:53 PM
 
Modify
 
Delete
 
Quote

@tanimon (un grosso saluto, ciao)
Mi spiace non và bene, perchè ci sono Nazioni composte da 2/3 parole

@locatevaresino
Veri complimenti, non riesco spiegarmi il Tuo >>>If InStr(1, CogNom, NomeNaz, 0) > 0 Then
Non hai definito le (Nazioni,CogNom) eppure funziona. Me lo spieghi, come hai fatto???
Mi farebbe piacere sapere come incrementarla...la stringa in realtà è questa (pensavo di farlo in seguito)
EX ITALIA De Rossi Paolo FortunatoEsclusoPromossoRimandato
Però in realtà, se noti "FortunatoEscluso senza spazi, oppure Promosso/Rimandato", io preferirei usare "diversi" replace " e lo tolgo

@gioheu66
Stessa risposta a tanimon, alcune Nazioni anno 2/3 nomi
Forse mi sbaglio, meglio che alleghi un files
[Edited by raffaele1953 4/13/2019 4:53 PM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 3,726
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/13/2019 4:19 PM
 
Modify
 
Delete
 
Quote

Un attimo @locatevaresino che controllo......
A parte il mio allegato=OK, non mi funziona se avrò le Nazioni in altro foglio...?
Forse nella Function devo descrivere il range delle Nazioni??? Ex Nazioni = Sheets("Dati").Range("A100:A500) ???
[Edited by raffaele1953 4/13/2019 4:43 PM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 2,129
Registered in: 3/21/2008
Location: LOCATE VARESINO
Age: 71
Veteran User
2007 / 13
OFFLINE
4/13/2019 5:16 PM
 
Modify
 
Delete
 
Quote

ciao Raffaele

le variabili vengono gia' definite con ByVal o ByRef
(ByVal Nazioni As Range, ByVal CogNom As Range)


ByRef
Call statement
Declare statement
Function statement
Property Get statement
Property Let statement
Property Set statement
Sub statement
ByVal
Call statement
Declare statement
Function statement
Property Get statement
Property Let statement
Property Set statement
Sub statement



quindi non serve effettuare un Set per il ciclo For Each

L'unica pecca e' che se tu inveri una nazione più corta con una più lunga la funzione ritorna errata

ess. prova a invertire
IRLANDA con IRLANDA DEL NORD
quindi bisogna sempre mettere prima quella corta e dopo quella lunga
per le nazioni in un altro foglio non ci sono problemi ess le tue nazioni in Foglio2 la formula e' la seguente
=toglietesto(Foglio2!$A$2:$A$12;B2)

ti riallego il file


Ciao da locate
excel 2007 / 13
Post: 18
Registered in: 10/15/2017
Location: SAN VITO AL TORRE
Age: 53
Junior User
Excel online
OFFLINE
4/13/2019 5:36 PM
 
Modify
 
Delete
 
Quote

@raffaele1953 hai ragione. Ero partito con un'idea e poi mi si è contorto il ragionamento. sigh!
Post: 3,727
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/13/2019 11:25 PM
 
Modify
 
Delete
 
Quote

Risolto. Grazie a tutti
Siete sempre i migliori

@locatevaresino
Mi và benissimo in questo modo...=toglietesto(Foglio2!$A$2:$A$12;B2)
Ps. Mi ero già accorto "in passato" che le Function intervengono continuamente nel VBA, mentre elaboro un'altro codice.
Credo/penso/devo... bloccarli con Application.EnableEvents = False ??? per velocizzarlo?

Solo una precisazione, se volessi togliere pure il >>>EsclusoPromossoRimandato
Forse meglio che usi il Replace...?

PPPsssssss
Casomai per altri utenti che non usano il VBA...
Come farlo tramite formule ??? (in generale le Nazioni usano da 1/3 parole)
Io non ci sono riuscito
[Edited by raffaele1953 4/14/2019 12:44 AM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 295
Registered in: 1/15/2016
Location: ROMA
Age: 46
Junior User
2016
OFFLINE
4/14/2019 11:27 AM
 
Modify
 
Delete
 
Quote

Buongiorno a tutti
in C2 da attivare con CTRl+SHIFT+INVIO e trascinare in basso

=ANNULLA.SPAZI(SOSTITUISCI($B2;INDICE($A$2:$A$12;PICCOLO(SE((SE.ERRORE(RICERCA($A$2:$A$12;$B2);0)>0);RIF.RIGA($A$2:$A$12)-1);SOMMA(SE.ERRORE(RICERCA($A$2:$A$12;$B2);0))));""))
[Edited by DANILOFIORINI 4/14/2019 11:35 AM]
Post: 3,729
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/14/2019 12:10 PM
 
Modify
 
Delete
 
Quote

Complimenti pure a DANILOFIORINI
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 0
Registered in: 4/22/2012
Age: 37
Junior User
OFFLINE
4/14/2019 2:20 PM
 
Modify
 
Delete
 
Quote

estraRRe, due R
Post: 296
Registered in: 1/15/2016
Location: ROMA
Age: 46
Junior User
2016
OFFLINE
4/14/2019 2:51 PM
 
Modify
 
Delete
 
Quote

magari se ci spieghi che significa....
Post: 3,730
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/14/2019 8:31 PM
 
Modify
 
Delete
 
Quote

Era per il mio Titolo del post
Purtroppo non riesco correggerlo


EDIT --- Riverificando la risposta del 14/04/2019 14.20 e con grande "sorpresa" cliccando sul "creatore" noto diverse donnine + l'icona d'EXCEL...??? Cliccandoci, per fortuna non vedo la mia foto.
[Edited by raffaele1953 4/19/2019 3:35 PM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Post: 5,650
Registered in: 11/14/2004
Master User
Versione Excel
OFFLINE
4/15/2019 8:13 AM
 
Modify
 
Delete
 
Quote

Estrarre parole da una frase
Ciao Raffaele ed un saluto a tutti, l'ho corretta io l'intestazione, e mi sono anche permesso di modificare un poco la UDF di Locate che Saluto e non me ne voglia, ho solo aggiunto un opzione in più, togliere anche il testo che non serve oltre la Nazione.

l'ho chiamata "ToglieTesto2" ecco la modifica

Function ToglieTesto2(ByVal Nazioni As Range, ByVal CogNom As Range, Optional Testo As String) As String
Dim Stringa As String
Dim NomeNaz As Variant
For Each NomeNaz In Nazioni
 If InStr(1, CogNom, NomeNaz, 0) > 0 Then
   Stringa = Trim(Replace(CogNom, NomeNaz, ""))
 End If
Next
If Len(Testo) > 0 Then Stringa = Trim(Replace(Stringa, Testo, ""))
ToglieTesto2 = Stringa
End Function


in effetti funziona come l'originale di Locate ma inserendo ad esempio "Fortunato" come ultimo parametro lo toglie, se non inserisci niente lascia cosi com'è, l'esempio della funzione nella barra della formula ed il risultato in colonna "G".

english gypsy baby names

Logico che devi inserire tutto il testo che non vuoi, se inserisci solo "Fort" rimane "unato", ed è anche tacito che non tutte le parole della colonna Contengono "Fortunato", ma se non vuoi che quella parola compaia dove sia presente nelle altre righe, questo può andare bene.

Ciao By Sal [SM=x423051]

[Edited by by sal 4/15/2019 8:29 AM]
Excel 2013

Iscriviti al nuovo sito che ho aperto troverai altre RISPOSTE

https://www.bysal-excel.it
Post: 2,131
Registered in: 3/21/2008
Location: LOCATE VARESINO
Age: 71
Veteran User
2007 / 13
OFFLINE
4/15/2019 5:44 PM
 
Modify
 
Delete
 
Quote

ciao Raffaele

visto adesso l'intervento di Sal, che saluto
perché non apportare un ulteriore miglioria alla UDF
quindi alla optional o allacciato una Split() dove possiamo inserire
qualsiasi testo da annullare


Function ToglieTesto2(ByVal Nazioni As Range, ByVal CogNom As Range, Optional Testo As String) As String
Dim Stringa As String
Dim NomeNaz As Variant
Dim T_esto() As String
Dim i As Long
For Each NomeNaz In Nazioni
If InStr(1, CogNom, NomeNaz, 0) > 0 Then
Stringa = Trim(Replace(CogNom, NomeNaz, ""))
End If
Next
If Len(Testo) > 0 Then
T_esto = Split(Testo, " ")
For i = LBound(T_esto) To UBound(T_esto)
Stringa = Trim(Replace(Stringa, T_esto(i), ""))
Next
End If
ToglieTesto2 = Stringa
End Function


utilizzo in base ai dati in colonna A:A o altro foglio e colonna B

=ToglieTesto2($A$2:$A$12;B2;"Escluso Promosso Rimandato Fortunato ecc. ecc.")






[Edited by locatevaresino 4/15/2019 5:49 PM]
Ciao da locate
excel 2007 / 13
Post: 5,651
Registered in: 11/14/2004
Master User
Versione Excel
OFFLINE
4/15/2019 6:10 PM
 
Modify
 
Delete
 
Quote

Ciao Locate, "visto che l'appetito viene mangiando" Bravo!

Ciao By Sal [SM=x423051]

Hoops ho visto la tua risposta, ma puoi inserirlo cosi senza spazi, e si potrebbe anche eliminare solo quello che scrivi anche se intercalato in altre parole.
[Edited by by sal 4/15/2019 6:14 PM]
Excel 2013

Iscriviti al nuovo sito che ho aperto troverai altre RISPOSTE

https://www.bysal-excel.it
Post: 3,731
Registered in: 6/28/2011
Location: BINASCO
Age: 65
Master User
2007
OFFLINE
4/15/2019 6:11 PM
 
Modify
 
Delete
 
Quote

Vi ringrazio molto, casomai servirà per altri utenti
Preferisco usare =toglietesto(Foglio2!$A$2:$A$12;B2) e dato che ci devo far girare altro codice sul foglio ci metterò pure alcuni replace... Tutto perchè a parte "Fortunato" che fà parte del Cognome nome le ulteriori "3 voci" (FortunatoEsclusoPromossoRimandato, solo una voce mà non posso sapere quale sarà) sono attaccate senza spazi.
Comunque grazie mille lo stesso
[Edited by raffaele1953 4/15/2019 6:19 PM]
------------------------------------
Un saluto Excel 2007 (se riesco capire il 2013)
Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
 | 
Reply
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Home Forum | Bacheca | Album | Users | Search | Log In | Register | Admin
Tutti gli orari sono GMT+01:00. Adesso sono le 11:42 PM. : Printable | Mobile | Regolamento | Privacy
FreeForumZone [v.5.0.0] - Copyright © 2000-2019 FFZ srl - www.freeforumzone.com