Inserire in base al testo un prefisso di una parola contenuta in posizione casuale

Anonimo
2011-01-12T13:06:06+00:00

Ultima domanda del giorno! Su una cartella di lavoro AAA ho un foglio che contiene ad esempio in

A2 GALLINA ed in B2 il rel prefisso che deve essere le prime tre lettere quindi GAL

A3 PECORA ed in B3 il rel prefisso che deve essere le prime tre lettere quindi PEC

A4 SQUALO ed in B4 il rel prefisso che deve essere le prime tre lettere quindi SQU

e via dicendo senza sapere esattamente fin dove arriva l'elenco.

In un'altra cartella di lavoro denominata BBB nella colonna P e quindi nelle celle da P2 in poi ho un testo dove all'interno può essere contenuta una delle parole presenti nell'elenco, dell'altra cartella di lavoro AAA, della colonna A. Ad es posso avere in P2 il testo "il topo si mangia la gallina" oppure in P3 "la pecora dorme ancora". Bene vorrei e dico vorrei che nel primo caso, nella colonna R di questa cartella di lavoro BBB, venisse inserito il relativo prefisso di tre lettere che nel primo caso è in R2 GAL e nel secondo caso è in R3 PEC.

E' un'operazione possibile? Sempre che la gallina, la pecora e lo squalo siano d'accordo?

Grazie 1000, come sempre

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-01-20T16:56:58+00:00

Provo da capo.

FILEA, FOGLIO1 Ho un  valore in A2 "moto"; ho un valore in B2 "topo"; C2 è la concatenazione di A2eB2 quindi "mototopo"

FILEB, FOGLIO1 In A2 ho "mototopo", mentre in B2 ho un prefisso che decido/scrivo io "mot"; in C2 ho un altro prefisso che decido/scrivo io "gas"

Nel FILEA FOGLIO1 , all'attivazione tramite modulo standard di una macro, e quindi una volta che ho già compilato i campi A2 e B2 di questo stesso foglio, vorrei che in D2 mi scrivesse il B2 ("mot") del FILEB FOGLIO1, e che in E2 mi scrivesse il C2 ("gas") del FILEB FOGLIO1.

La stessa operazione/macro andrà ripetuta n volte fintanto che ho celle non vuote in A del FILEA FOGLIO1. Mi scuso e spero di essermi spiegato al meglio

 

Hai cambiato un bel po' la domanda rispetto al primo post!!!! Mah... Prova:

Public Sub m()

On Error GoTo RigaErrore

    Dim wk As Workbook

    Dim sh As Worksheet

    Dim lRiga As Long

    Dim lRigaMe As Long

    Dim lng As Long

    Dim lCont As Long

    Dim shMe As Worksheet

    Set wk = Workbooks("FileB.xls")

    Set sh = wk.Worksheets("Foglio1")

    Set shMe = ThisWorkbook.Worksheets("Foglio1")

    lRiga = sh.Range("A" & sh.Rows.Count).End(xlUp).Row

    With shMe

        lRigaMe = .Range("A" & .Rows.Count).End(xlUp).Row

        For lCont = 2 To lRigaMe

            If Len(.Range("A" & lCont).Value) > 0 Then

                For lng = 2 To lRiga

                    If InStr(.Range("C" & lCont).Value, sh.Range("A" & lng).Value) Then

                        .Range("D" & lCont).Value = sh.Range("B" & lng).Value

                        .Range("E" & lCont).Value = sh.Range("C" & lng).Value

                        Exit For

                    End If

                Next

            End If

        Next

    End With

RigaChiusura:

    Set shMe = Nothing

    Set sh = Nothing

    Set wk = Nothing

    Exit Sub

RigaErrore:

    MsgBox Err.Number & vbNewLine & Err.Description

    Resume RigaChiusura

End Sub

Qui fa quello che mi aspetto con le specifiche del tuo ultimo post.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-01-13T15:22:50+00:00

Funziona grazie ma posso ottenere lo stesso risultato con una macro?Preferirei integrare l'operazione con altre tutte in una macro....

Grazie e buonanotte a tutti

 

Quindi la macro dovrebbe risiedere nel FileB, perchè è nel FileB che digiti quanto stai ricercando nella tabella in FileA, giusto?


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

Si la macro è nella cartella di lavoro BBB e nel foglio1....

Grazie, finalmente sole a Milano!

Buona giornata

Proviamo. FileA con i dati dati in Foglio1 nelle colonne A e B(come da tua specifica). FileB, scrivo in Foglio1 da P2 in poi e voglio che se una parte di quello che scrivo in colonna P corrisponde a quanto presente in colonna A del File A, mi venga riportato in colonna R quanto si trova in colonna B del File A. Entrambi i files sono aperti. Il codice qui sotto è da copia/incollare nel modulo di codice del Foglio1  del FileB:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo RigaErrore

    Dim wk As Workbook

    Dim sh As Worksheet

    Dim lRiga As Long

    Dim lng As Long

    Set wk = Workbooks("FileA.xls")

    Set sh = wk.Worksheets("Foglio1")

    If Target.Cells.Count = 1 And _

        Target.Column = 16 Then

        With sh

            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row

            For lng = 2 To lRiga

                If InStr(Target.Value, .Range("A" & lng).Value) Then

                    Target.Offset(0, 2).Value = .Range("B" & lng).Value

                    Exit For

                End If

            Next

        End With

    End If

RigaChiusura:

    Set sh = Nothing

    Set wk = Nothing

    Exit Sub

RigaErrore:

    MsgBox Err.Number & vbNewLine & Err.Description

    Resume RigaChiusura

End Sub

Modifica i riferimenti a files e fogli con i tuoi. Adesso è sufficiente tu scriva qualcosa nelle celle P2/P(n) per vedere quanto chiedi nella colonna R. Fai sapere, grazie.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

18 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-01-19T20:40:41+00:00

    Buongiorno, direi nel momento in cui  C e D entrambe (e quindi poi tutte le celle C e D delle stesse righe della colonna P interessata) sono celle non vuote e contengono un testo e/o valore, sarebbe perfetto. O se più semplice farlo proprio come macro, quindi premendo un tasto, macro penso al di fuori del Foglio1 ed inserita come modulo!Merci

    Buon week end

    Purtroppo devo ancora cambiar idea!! Ho bisogno che venga scritto il prefisso nella colonna P quando faccio partire la macro, quindi alla pressione del play o di un CTRL+"una lettera".

    Grazie e scusate l'indecisione ;)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-01-15T13:20:14+00:00

    Buongiorno Mauro devo aver preso un granchio ieri sera! Funziona alla grande la tua prima versione! Quindi dimentica...anzi dimenticaMI, scherzo ;)

    Buon week end Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-01-15T09:03:38+00:00

    Buongiorno, direi nel momento in cui  C e D entrambe (e quindi poi tutte le celle C e D delle stesse righe della colonna P interessata) sono celle non vuote e contengono un testo e/o valore, sarebbe perfetto. O se più semplice farlo proprio come macro, quindi premendo un tasto, macro penso al di fuori del Foglio1 ed inserita come modulo!Merci

    Buon week end

    La risposta è stata utile?

    0 commenti Nessun commento