Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Trova testo in due celle consecutive sostituisce testo in altre celle

Ultimo Aggiornamento: 04/12/2017 18:50
Post: 56
Registrato il: 02/08/2012
Città: TREVISO
Età: 71
Utente Junior
Excel 2010
OFFLINE
05/11/2017 11:26

Buon giorno,
ho bisogno di aiuto in un file con circa 650.000 righe.

Io dovrei cercare nella colonna "E" di un foglio Excel la parola "Verb" con la condizione che si ripeta in due celle consecutive della Colonna "E" ad es. in E1 "Verb" ed E2 "Verb" e si trova ancora in E30 ed E31 nell'esempio allegato.
La seconda condizione è la seguente: nella cella "D2" (nel caso la parola "Verb" si è trovata nelle celle E1 e E2) sia presente la parola "sum" (nel secondo caso dell'esempio "sum" è in cella D31).
Se le due condizioni si realizzano: 1) la parola "Verb" presente in due celle consecutive della colonna "E"; 2) e nella cella D (la "seconda" contigua al secondo "Verb") è presente la parola "sum":
3) che nella cella "H" corrispondente alla riga del primo "Verb" vi sia la parola "passive" o "deponent" (e non "active").

- devo inserire nella riga dove vi è la parola "sum" (presente in cella D) cancellando il contenuto da cella "F" fino a cella "P" della riga e inserendo le seguenti parole "auxiliary" in cella "H" e "@@@@@" in cella "P" (io poi sostituirò "@@@@@" con una frase abbastanza lunga sempre eguale).

Allego un file di esempio: nelle righe da 1 fino a 31 vi è il testo su cui effettuare la ricerca (ho evidenziato in rosso le condizioni di ricerca e le celle da cancellare da F (comunque le prime celle scritte dovrebbero essere da I in poi) fino a P) e nelle righe da 36 a 66 il Risultato da ottenere (anche qui lo ho evidenziato in rosso per miglior visibilità).
Grazie
Pasquale

[Modificato da pasquale@Excel 05/11/2017 11:46]
Post: 3.986
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
05/11/2017 12:48

Sub a()
LR = Cells(Rows.Count, "E").End(xlUp).Row
For r = 1 To LR
  If Cells(r, "E") = "Verb" And Cells(r + 1, "E") = "Verb" Then
    If Cells(r + 1, "D") = "sum" And (Cells(r, "H") = "passive" Or Cells(r, "H") = "deponent") Then
      Cells(r + 1, "H") = "auxiliary"
      Cells(r + 1, "P") = "@@@@"
    End If
  End If
Next
End Sub

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 56
Registrato il: 02/08/2012
Città: TREVISO
Età: 71
Utente Junior
Excel 2010
OFFLINE
05/11/2017 14:32

Grazissime,
l'ho lanciata nel file e sembra perfetta.
Mi ha evitato ore e ore di ricerca.
La utilizzo e se ho problemi scrivo nuovamente.

Pasquale [SM=x423028] [SM=x423028]
Post: 57
Registrato il: 02/08/2012
Città: TREVISO
Età: 71
Utente Junior
Excel 2010
OFFLINE
03/12/2017 18:36

Ciao, avrei bisogno di aiuto per modificare la macro:
poiché nel foglio in questione, al soddisfacimento delle condizioni riportate nel primo post:
If Cells(r, "E") = "Verb" And Cells(r + 1, "E") = "Verb" Then
If Cells(r + 1, "D") = "sum" And (Cells(r, "H") = "passive" Or Cells(r, "H") = "deponent") Then
Cells(r + 1, "H") = "auxiliary"

dovrei sostituire il contenuto (il testo) della cella "C" della riga (r, "E") con il suo stesso (ad esempio" factum") in aggiunta il segno "_" e quindi il contenuto della cella "C" della riga sottostante (est)(r + 1, "E") (eliminando l'intera riga r + 1, "E") ho modificato la macro aggiungendo
Cells(r, "C") = "r, C" + "_" + "r + 1, C", per ottenere il testo "factum_est" (senza gli apici) ma il risultato ottenuto è che nella cella C mi esce: r, C_r + 1, C
e non il testo presente in cella "C" (factum) e in cella "C + 1"(est) con in mezzo il segno "_".

Macro modificata

Sub a()
LR = Cells(Rows.Count, "E").End(xlUp).Row
For r = 1 To LR
If Cells(r, "E") = "Verb" And Cells(r + 1, "E") = "Verb" Then
If Cells(r + 1, "D") = "sum" And (Cells(r, "H") = "passive") And (Cells(r, "J") = "perfect" Or Cells(r, "J") = "pluperfect") Then
Cells(r + 1, "O") = "to be = auxiliary (Periphrastic passives)"

Cells(r, "C") = "r, C" + "_" + "r + 1, C" mia modifica
End If
End If
Next
End Sub

____________________________________
Inoltre vorrei che la macro mi riportasse il testo presente in colonna "B" nelle righe successive fino alla prima cella precedente a quella vuota.
Allego esempio in foglio 1 (testo) il testo normale e in foglio 2 (risultato) il testo desiderato.
[Modificato da pasquale@Excel 03/12/2017 18:54]
Post: 4.039
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
04/12/2017 08:31

non ho capito bene, comunque se hai intuito la soluzione la riga
Cells(r, "C") = "r, C" + "_" + "r + 1, C" 

deve diventare
Cells(r, "C") = Cells(r, "C")  + "_" + Cells(r + 1, "C")

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 58
Registrato il: 02/08/2012
Città: TREVISO
Età: 71
Utente Junior
Excel 2010
OFFLINE
04/12/2017 18:50

Grazie Patel tutto OK.

Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 19:01. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com