estrarre la prima lettera di ciascuna parola

Anonimo
2013-10-01T07:39:51+00:00

Ciao

esiste in excel una funzione che mi permette di estrarre la prima lettera di ciascuna parola contenuta in una cella?

Esempio:

A1 = cozza lucia nata a

B1 = clna

Lucia

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
2013-10-01T10:15:52+00:00

In realtà mi sono accorta di un mio piccolo errore. Ho richiesto una funzione, ma in realtà intendevo una macro.

Va benissimo anche la funzione, ma come faccio ad applicarla a tutte le celle della colonna A?

Il numero delle righe, ogni volta che importo un file di testo, cambia...

Grazie.

Scusate, la prossima volta sarò più precisa!

Due modi per utilizzare la Function di Andrea da macro(entrambe leggono la colonna A del Foglio1 e mettono l'acronimo nella cella B):

Public Sub m_1()

    Dim sh As Worksheet

    Dim lRiga As Long

    Dim lng As Long

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

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

        For lng = 1 To lRiga

            .Range("B" & lng).Value = Acronimo(.Range("A" & lng).Value)

        Next

    End With

    Set sh = Nothing

End Sub

Public Sub m_2()

    Dim sh As Worksheet

    Dim lRiga As Long

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

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

        .Range("B1").Value = "=Acronimo(A1)"

        .Range("B1").AutoFill Destination:=.Range("B1:B" & lRiga)

    End With

    Set sh = Nothing

End Sub

La seconda è più veloce.

Aggiungo che inserendo questa riga come ultima istruzione all'interno di With sh, otterrai il risultato e non la formula:

        .Range("B1:B" & lRiga).Value = .Range("B1:B" & lRiga).Value

Puoi inoltre scrivere a mano in cella B1: =Acronimo(A1) e quindi trascinare verso il basso o fare doppio click sulla maniglia di cella B1(per maniglia intendo il quadratino in basso a dx nella cella).

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-10-01T10:54:47+00:00

    Perfetto! 

    Semplice e veloce...

    Grazie!

    Lucia

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-10-01T10:27:06+00:00

    In realtà mi sono accorta di un mio piccolo errore. Ho richiesto una funzione, ma in realtà intendevo una macro.

    Va benissimo anche la funzione, ma come faccio ad applicarla a tutte le celle della colonna A?

    Il numero delle righe, ogni volta che importo un file di testo, cambia...

    Grazie.

    Scusate, la prossima volta sarò più precisa!

    Ormai l'avevo scritta ... 

    Andrea.


    Sub applicaFunction()

    Dim rSource As Range, rTarget As Range, rCel As Range

    Dim lLastRow As Long, i As Long

    With Worksheets("Foglio1")

    '---------- determino ultima riga nella colonna A

    lLastRow = .Cells(Rows.Count, "A").End(xlUp).Row

    '---------- intervallo che contiene il testo da elaborare

    Set rSource = .Range("A1:A" & lLastRow)

    '---------- intervallo di destinazione del risultato

    Set rTarget = .Range("E1:E" & lLastRow)

    '---------- NB: se utilizzo il primo, il secondo (variante) o il terzo metodo possono coincidere

    '---------- primo metodo: assegno direttamente il risultato della funzione

    For i = 1 To rSource.Cells.Count

    rTarget.Cells(i, 1).Value = Acronimo(rSource.Cells(i, 1).Value)

    Next

    '---------- primo metodo: (variante) utilizzo variant array in luogo dei range

    Dim vbSource As Variant, vbTarget As Variant

    vbSource = .Range("A1:A" & lLastRow).Value

    ReDim vbTarget(1 To lLastRow)

    For i = 1 To rSource.Cells.Count

    vbTarget(i) = Acronimo(vbSource(i, 1))

    Next

    '---------- incollo il risultato nel range di destinazione

    rTarget.Value = vbTarget

    '---------- secondo metodo: utilizzo la formula sul foglio e incollo i risultati

    '---------- ATTENZIONE: la sintassi della formula è sempre quella inglese

    rTarget.FormulaR1C1 = "=Acronimo(RC[-4])"

    rTarget.Copy

    rTarget.PasteSpecial xlPasteValues

    Application.CutCopyMode = False

    '---------- in alternativa, posso valutare direttamente la formula con Evaluate:

    ' sFunc = "=Acronimo(""" & rSource.Cells(i, 1).Value & """)"

    ' rTarget.Cells(i, 1).Value = [sFunc]

    '---------- secondo metodo: (variante) valuto il risultato della formula direttamente nella cella

    Dim sFunc As String

    For i = 1 To rSource.Cells.Count

    sFunc = "=Acronimo(""" & rSource.Cells(i, 1).Value & """)"

    rTarget.Cells(i, 1).Value = [sFunc]

    Next

    '---------- terzo metodo: integro la funzione nella sub (se possibile o conveniente)

    Dim aWord As Variant

    Dim j As Long

    Dim sRes As String

    For i = 1 To rSource.Cells.Count

    sRes = vbNullString

    aWord = Split(rSource.Cells(i, 1).Value, " ")

    For j = 0 To UBound(aWord)

    sRes = sRes & Left$(aWord(j), 1)

    Next

    rTarget.Cells(i, 1).Value = sRes

    Next

    End With

    '---------- pulizia

    Set rSource = Nothing:  Set rTarget = Nothing

    End Sub


    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-10-01T08:57:28+00:00

    In realtà mi sono accorta di un mio piccolo errore. Ho richiesto una funzione, ma in realtà intendevo una macro.

    Va benissimo anche la funzione, ma come faccio ad applicarla a tutte le celle della colonna A?

    Il numero delle righe, ogni volta che importo un file di testo, cambia...

    Grazie.

    Scusate, la prossima volta sarò più precisa!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-10-01T07:52:39+00:00

    Ciao

    esiste in excel una funzione che mi permette di estrarre la prima lettera di ciascuna parola contenuta in una cella?

    Esempio:

    A1 = cozza lucia nata a

    B1 = clna

    Lucia

    Sì.

    Andrea.


    Function Acronimo(text As Variant) As String

    Dim aWord As Variant

    Dim i As Integer

    Dim sRes As String

    aWord = Split(text, " ")

    For i = 0 To UBound(aWord)

    sRes = sRes & Left$(aWord(i), 1)

    Next

    Acronimo = sRes

    End Function


    La risposta è stata utile?

    0 commenti Nessun commento