Condividi:        

macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 12/03/10 14:07

Ciao a tutti, è la prima volta che scrivo in questo forum.
Sto lavorando su un dizionario e devo realizzare una macro su EXCEL per compiere la seguente opreazione: scorrere la co. A che si presenta più o meno così:

abbaino: (cost.) claraboya, tragaluz, buharda.
- = mansarda: (cost.) buharda, desván.
abballottamento: (fond.) enfriamento de hierro fundido.
abbandonare: abandonar, dejar, renunciar, desistir.
- un lavoro: abandonar un trabajo.
- un posto: (pers.) dejar un puesto / (aud-vis.) dejar un asiento.
- un'azione: (leg.) desistir de un procedimiento.
- un'eredità: (leg.) renunciar a una herencia.
abbandonatario: renunciatario, cesionario.


e sostituire i trattini con la rispettiva parola chiave per ottenere il seguente risultato nella colonna B:

abbaino: (cost.) claraboya, tragaluz, buharda.
abbaino = mansarda: (cost.) buharda, desván.
abballottamento: (fond.) enfriamento de hierro fundido.
abbandonare: abandonar, dejar, renunciar, desistir.
abbandonare un lavoro: abandonar un trabajo.
abbandonare un posto: (pers.) dejar un puesto / (aud-vis.) dejar un asiento.

ecc

Come posso farlo? Ringarazio anticipatamente, ogni suggerimento è gradito!
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55

Sponsor
 

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi Flash30005 » 12/03/10 16:50

Ciao Irimiki e benvenuto nel forum

Copia questa macro

Codice: Seleziona tutto
Sub CompilaB()
URA = Range("A" & Rows.Count).End(xlUp).Row
For R = 1 To URA
If Mid(Range("A" & R).Text, 1, 1) <> "-" Then
Str0 = Range("A" & R).Text
Str1 = Mid(Str0, 1, InStrRev(Str0, ":") - 1)
StrBF = Range("A" & R).Text
Else
StrB = Mid(Range("A" & R).Text, 2, Len(Range("A" & R).Text))
StrBF = Str1 & StrB
End If
 Range("B" & R).Value = StrBF
Next R
    Columns("A:A").Select
    Selection.Copy
    Columns("B:B").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
End Sub



Incolla il codice copiato in un modulo
ed eseguila la macro

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 12/03/10 18:09

Grazie infinite, anche per la tempestività della risposta.
Ha funzionato subito.
L'unica cosa, io avrei bisogno di mantenere nel testo copiato in B la formattazione originale della colonna A (grassetti, corsivi, sottolineature di alcuni caratteri).
Con la macro che ho eseguito questo non succede.

La colonna A :

abacà: (tess.) abacá, cáñamo de Manila.
abaco: (arch.) (mat.) ábaco.
- di potenza: (mecc.) ábaco de potencia.
abbagliamento: deslumbramiento / (ott.) encandilamiento.
- dei fari: (veic.) deslumbramiento de los faros.
abbagliante: deslumbrante.
abbagliare: deslumbrar / (ott.) encandilar.

La colonna B dopo l'esecuzione della macro compare tutta in grassetto, il corsivo non c'è più e tutta la riga che contiene la parola "abaco" diventa sottolineata (mentre la sottolineatura deve essere solo sotto la lettera "a"):

abacà: (tess.) abacá, cáñamo de Manila.
abaco: (arch.) (mat.) ábaco.
abaco di potenza: (mecc.) ábaco de potencia.
abbagliamento: deslumbramiento / (ott.) encandilamiento.
abbagliamento dei fari: (veic.) deslumbramiento de los faros.
abbagliante: deslumbrante.
abbagliare: deslumbrar / (ott.) encandilar.


Si può ovviare a questo inconveniente?
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi Anthony47 » 12/03/10 23:46

L'unica cosa, io avrei bisogno di mantenere nel testo copiato in B la formattazione originale della colonna A (grassetti, corsivi, sottolineature di alcuni caratteri).
L' unica cosa che vorresti si puo' solo fare controllando carattere per carattere di ogni stringa quale era la sua formattazione iniziale per riapplicarla carattere per carattere.
Se le formattazioni che ti interessano sono "solo" Grassetto, Sottolineato, Corsivo allora ti potra' aiutare questa macro.
Codice: Seleziona tutto
Sub irimik2()
'
Range("A:A").Copy Destination:=Range("B1")
'Application.ScreenUpdating = False    '<<< Display y/n)
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
 Cells(I, 2).Select
 On Error Resume Next
 If Left(Cells(I, 1).Value, 1) <> "-" Then
  Sost = Split(Cells(I, 1).Text, ":")
  RefI = I: K = Len(Sost(0))
 Else
  Cells(I, 2).Value = Sost(0) & Mid(Cells(I, 2).Text, 2, Len(Cells(I, 2).Text))
  For J = 1 To Len(Cells(I, 2).Text)
   If J < Len(Sost(0)) Then
    Cells(I, 2).Characters(J, 1).Font.Bold = Cells(RefI, 1).Characters(J, 1).Font.Bold
    Cells(I, 2).Characters(J, 1).Font.Italic = Cells(RefI, 1).Characters(J, 1).Font.Italic
    Cells(I, 2).Characters(J, 1).Font.Underline = Cells(RefI, 1).Characters(J, 1).Font.Underline
   Else:
    Cells(I, 2).Characters(J, 1).Font.Bold = Cells(I, 1).Characters(J - K + 1, 1).Font.Bold
    Cells(I, 2).Characters(J, 1).Font.Italic = Cells(I, 1).Characters(J - K + 1, 1).Font.Italic
    Cells(I, 2).Characters(J, 1).Font.Underline = Cells(I, 1).Characters(J - K + 1, 1).Font.Underline
  End If
  Next J
 End If
Next I
End Sub

Potrebbe non essere velocissimo ma vedrai l' avanzamento del lavoro; se vuoi velocizzare togli l' apostrofo in testa all' istruzione marcata <<<Display y/n

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 13/03/10 09:58

Ho risolto il problema grazie ai vostri suggerimenti. Fortunatamente, devo controllare solo grassetti, corsivi e sottolineature.
Grazie ancora, e complimenti per la competenza e la disponibilità.
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi Flash30005 » 13/03/10 12:26

iRiMiKi ha scritto:Fortunatamente, devo controllare solo grassetti, corsivi e sottolineature.


:?:

La macro di Anthony funziona egregiamente e replica il formato passo dopo passo e riga dopo riga l'intera colonna A

L'hai provata?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 13/03/10 13:23

Certo! La sto utilizzando. Funziona bene anche su volumi di dati maggiori.
Forse non era chiaro il commento che ho inserito poc'anzi: è grazie ai vostri suggerimenti che ho risolto il mio problema!
Buona giornata a tutti.
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 16/03/10 17:16

Ciao a tutti,
sono qui di nuovo a chiedere il vostro aiuto.

Devo scorrere le rige e, nel caso si verifichi la condizione "il campo B non è vuoto e nel campo C il primo carattere è trattino", fare la seguente trasformazione, inserendo una riga SOPRA quella individuata (vd.immagine):

[img]
http://img687.yfrog.com/i/imgaggiornamenti.jpg/[/img]

E' necessario controllare grassetto, corsivo e sottolineato.

Ho provato ad arrangiarmi con la macro che copio qui di seguito, ma la riga mi viene inserita SOTTO quella attiva... e così mi sono bloccata.
Sub MacroAggiornamenti()
'
' MacroAggiornamenti Macro
'
Application.ScreenUpdating = False '<<< Display y/n)
For I = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(I, 2).Select
If Cells(I, 2).Value <> "" Then
If Left(Cells(I, 3).Value, 1) = "-" Then
ActiveCell.Range("A2").EntireRow.Insert
End If
End If
Next I
'
End Sub

Potete aiutarmi, per favore?
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi Anthony47 » 17/03/10 16:20

Prova questa:
Codice: Seleziona tutto
Sub MacroAggiornamenti()
'
' MacroAggiornamenti Macro
'
Application.ScreenUpdating = False '<<< Display y/n)
For I = Cells(Rows.Count, 2).End(xlUp).Row to 1 step -1
Cells(I, 2).Select
If Cells(I, 2).Value <> "" and Left(Cells(I, 3).Value, 1) = "-" Then
ActiveCell.EntireRow.Insert
End If
Next I
'
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)

Postdi iRiMiKi » 17/03/10 17:08

Provato, funziona perfettamente.
Grazie!
iRiMiKi
Utente Junior
 
Post: 10
Iscritto il: 12/03/10 13:55


Torna a Applicazioni Office Windows


Topic correlati a "macro EXCEL (ricerca ricorrenza+sostituzione con riga prec)":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti