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-12T17:12:44+00:00

    a nomi uguali questa funziona:

    =SCARTO([AAA.xlsx]Foglio1!$A$1;SOMMA(SE(VAL.TESTO([AAA.xlsx]Foglio1!$A$2:$A$1000)*NON(VAL.ERRORE(RICERCA([AAA.xlsx]Foglio1!$A$2:$A$1000;$P2)));RIF.RIGA($A$2:$A$1000)))-1;1)

    matriciale da confermare con Ctrl+Maiusc+Invio


    fai sapere, grazie

    ciao paoloard

    http://riolab.org

    ***********************************************

    Se la risposta ti ha aiutato "Vota come Utile".

    Se ha risolto il problema "Segna come Risposta".

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-01-12T15:19:08+00:00

    Si è così se nella cartella BBB in un foglio digito Gallina in A2 automaticamente nella colonna B2 mi deve scrivere GAL e via dicendo; ovvero al riempimento della cella della colonna A deve partire la macro per il prefisso delle prime tre lettere nella colonna B

    Entrambi file aperti, Se Gallo o Gallina sempre Gal

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-01-12T14:34:30+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

    Non ho capito nulla. FileA. Hai una tabella con dei dati in colonna A. In colonna B hai le prime tre valori del dato presente in colonna A. Vorresti che digitando in un foglio del FileB quanto contenuto nella colonna A, ti venisse scritto quanto si trova in colonna B. E' così? Se sì, entrambi i files sono aperti? E nel caso ci siano Gallo e Gallina, come ci comportiamo? 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