Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Macro per tutte le celle nono vuote

  • Messaggi
  • OFFLINE
    paolobosch
    Post: 1
    Registrato il: 30/04/2016
    Età: 74
    Utente Junior
    excel 2016
    00 24/01/2020 17:16
    Buonasera sto cercando di fare una macro che applica una formula per tutte le celle non vuote. Nell'istruzione ho inserito un if che verifica il primo campo e se non vuoto applica la formula (banalmente concatena il contenuto di più celle in una. Potrei testare tutte le righe e quindi ricopiare la stessa istruzione per un numero congruo di volte ma mi chiedevo se esiste un sistema più pulito, per esempio fare un ciclo che testa la cella se è maggiore di zero concatena e testa quella successiva finche non trova una cella vuota in quel caso esce
  • OFFLINE
    GiuseppeMN
    Post: 3.695
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 24/01/2020 18:06

    Buona sera, @paolobosh.
    Allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi desidera aiutarti.

    Giuseppe



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    paolobosch
    Post: 1
    Registrato il: 30/04/2016
    Età: 74
    Utente Junior
    excel 2016
    00 27/01/2020 17:05
    è vero sono stato poco chiaro
    alla fine però leggendo ho trovato, almeno in teoria la risposta alla mia domanda e cioè l'utilizzo di un ciclo però credo di aver commesso errori di sintassi.
    Premessa per eseguire questa sub routine ho inserito una call nella macro principale e sembra andare bene perhcè le istruzione antecedenti la chiamata funzionano questo è come ho scritto il ciclo, la variabile i che si incrementa ad ogni reiterazione cambia i puntamenti delle celle, è corretta come sintassi? mi sembra che comunque manche qualcosa perchè non gira

    Sub CicloDo()
    i = 2
    Do




    Range("AE& i").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(RC[-30]<>"" "",IF(RC[-16]>"" "",CONCATENATE(RC[-16],CHAR(10)),"" ""),"" "")"
    Range("AE& i").Select
    Selection.AutoFill Destination:=Range("AE& i:AR& i"), Type:=xlFillDefault
    Range("AE& i:AR& i").Select
    Range("AR& i").Select
    Selection.AutoFill Destination:=Range("AR& i:AU& i"), Type:=xlFillDefault
    Range("AR& i:AU& i").Select
    Range("AD& i").Select
    ActiveCell.FormulaR1C1 = _
    "=CONCATENATE(RC[15],RC[14],RC[13],RC[12],RC[11],RC[10],RC[9],RC[8],RC[7],RC[6],RC[5],RC[4],RC[3],RC[2],RC)"
    Range("AD& i").Select
    ActiveCell.FormulaR1C1 = _
    "=CONCATENATE(RC[15],RC[14],RC[13],RC[12],RC[11],RC[10],RC[9],RC[8],RC[7],RC[6],RC[5],RC[4],RC[3],RC[2],RC[1])"


    i = i + 1
    If "A&i" = 0 Then Exit Do
    Loop
    End Sub