+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Excel - Copia risultato formula

  1. #1
    sizetheday non è in linea Novello
    Post
    2

    Talking Excel - Copia risultato formula

    Salve,
    sto cercando di creare una macro che mi permetta di copiare il risultato di una formula contenuto in una cella.
    In pratica ho bisogno di copiare il risultato del cercavert che ho inserito nella cella in questione (un indirizzo email); il tutto per poter incollare successivamente il valore risultante in un programma distinto.

    Al momento sono bloccata qui:

    Sub prova()
    '
    '
    ' '
    Range("A1").Select
    Selection.Copy
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A3").Select
    End Sub

    Avevo pensato di utilizzare una cella di appoggio (la A2) per incollarci il valore della cella A1 (contenente la formula) e successivamente tagliare il contenuto della cella (ho bisogno che la cella A2 sia vuota alla fine della macro).
    Ho provato ma non riesco a tagliare il contenuto della cella (riesco a copiare ma il risultato resta nella seconda cella).
    E' possibile trovare una soluzione?

    Inizialmente avevo registrato una macro che copiava semplicemente la cella (un semplice ctsl+c) ma mi è stato sconsigliato in quanto potrebbero crearsi problemi. E' effettivamente così?

    Ho provato a cercare una soluzione ma non sono riuscita a trovare post simili.

    Grazie in anticipo per i suggerimenti

  2. #2
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Salve, sizetheday;
    non sono sicuro di aver capito esattamente; azzardo una risposta, correggimi tranquillamente.

    Ponendo di avere i Tuoi valori nella matrice $B1:$C12, potresti pensare di utilizzare solo la Cella "A1" utilizzando il codice:
    codice:
    Sub prova()
        Range("A1").FormulaLocal = "=CERCA.VERT($B1;$B1:$C12;2;0)"
        Range("A1").Select
            Selection.Copy
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
            Application.CutCopyMode = False
    End Sub
    In sostanza il codice, nel formato suggerito da "dodo47" in una precedente discussione, copia la Formula CERCA.VERT e successivamente trasforma la Formula in Valore. Tutte le volte che lanci il Codice, viene attivata la Formula CERCA.VERT poi trasformata in valore.
    In alternativa puoi pensare di non utilizzare VBA ma, semplicemente copiare il contenuto della Cella "A1", che sarà una Formula CERCA.VERT, e incollare il Valore nel Programma di destinazione.

    A disposizione.

    Giuseppe
    Ultima modifica di GiuseppeMN; 15-02-2013 00:45  Motivo: Correzione anagrafica

  3. #3
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao a tutti
    ricordo che un altro metodo per copiare i valori è il seguente:
    Formula in A1
    ...Range("A2")=Range("A1").Value

    saluti

  4. #4
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Buona giornata, Domenico;
    avevo pensato ad una soluzione analoga; quello che mi ha frenato è quello che chiede sizetheday:
    sizetheday, scrive:
    Avevo pensato di utilizzare una cella di appoggio (la A2) per incollarci il valore della cella A1 (contenente la formula) e successivamente tagliare il contenuto della cella (ho bisogno che la cella A2 sia vuota alla fine della macro).
    Anche nella Macro proposta da sizetheday la cella "A2" viene vuotata del contenuto.

    Per questo motivo avevo pensato di utilizzare solo la cella "A1" il cui valore si rigenera ogni volta che viene richiamata la Macro.

    A disposizione.

    Giuseppe

  5. #5
    L'avatar di dodo47
    dodo47 non è in linea Topo di biblioteca
    Post
    3,107
    Ciao Giuseppe
    forse non ho capito io...ma cosa impedisce di fare: Range("A1") = Range("A1").Value ?

    cari saluti

  6. #6
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Ciao Domenico;
    quello che non credo sia condiviso da sizetheday è:
    proposta precedente
    ...Range("A2")=Range("A1").Value
    Range("A1") = Range("A1").Value
    è, a mio avviso accettabile; il problema è che tutte le volte dovremmo riscrivere, in "A1", la Funzione CERCA.VERT
    Per questo motivo, volendo evitare di riscrivere la Funzione, avevo affidato questo compito ad una Macro.

    A questo punto, lascerei che sizetheday valuti serenamente tutte le proposte; poi, se lo ritiene opportuno, può esprimere le proprie considerazioni.

    A disposizione.

    Buona serata.

    Giuseppe

  7. #7
    sizetheday non è in linea Novello
    Post
    2
    Ciao Giuseppe e Domenico,
    ho fatto un po' di prove e la soluzione migliore nel mio caso è quella proposta da Giuseppe (mi permette di copiare il valore risultante dal cercavert rigenerandolo ogni volta senza lasciare "traccia" alla fine del processo).
    Grazie ancora per l'aiuto (e soprattutto per essere stati così veloci nel rispondere),
    Anna

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi