Excel Forum Per condividere esperienze su Microsoft Excel

cercare nome in range di colonne variabili e applicare formula

  • Messaggi
  • OFFLINE
    mb63
    Post: 136
    Registrato il: 10/04/2014
    Città: TORINO
    Età: 61
    Utente Junior
    2010
    00 11/05/2021 11:20
    bungiorno

    io ho fatto un'operazione in cui se in colonna J trova la parola pippo prosegue e fa altro.

    poi ho la stessa sub applicata alla colonne M.

    nel file che sto utilizzando ho accodato le due sub per arrivare al risultato finale e va bene

    qualcuno mi sa dire come devo correggere invece il file per vedere se riesco a fare il tutto con una sub unica

    quindi la sub dovrebbe fare se nell'area variabile colonne J ed M trovi la parola pippo procedi con la moltiplicazione

    Spero di essere stato chiaro

  • OFFLINE
    mb63
    Post: 136
    Registrato il: 10/04/2014
    Città: TORINO
    Età: 61
    Utente Junior
    2010
    00 11/05/2021 11:26
    Scusate ma è molto che non scrivo e non ricome mettere il codice dentro il tag



    ur = Range("j" & Rows.Count).End(xlUp).Row ' conta le righe
    For r = 1 To ur
    If Foglio1.Range("j1", "m" & r).Value = "pippo" Then


    in pratica per iniziare avrei bisogno di una correzione/spiegazione sulla riga IF Fogli che non è scritta in modo corretto

    grazie
  • ABCDEF@Excel
    10 11/05/2021 18:02
    >>>If Range("j1", "m" & r) = "pippo" Then
    Non può controllare diverse celle insieme, poi se ci fosse "pippo" in J3 e pure in M3?
    Crei una sub per la colonna J e una per la M, dopo le accodi una dopo l'altra.

    Ci fossero tante righe..., userei un'altro metodo con FIND
    Sub pippo2()
    Dim Ur As Long, y As Long, x As Long, N As Long, Rr As Long
    Dim Ob As Object
    If Range("J" & Rows.Count).End(xlUp).Row >= Range("M" & Rows.Count).End(xlUp).Row Then Ur _
    = Range("J" & Rows.Count).End(xlUp).Row Else Ur = Range("M" & Rows.Count).End(xlUp).Row
        For y = 10 To 13 Step 3
            N = Application.WorksheetFunction.CountIf(Range(Cells(1, y), Cells(Ur, y)), "pippo")
            Set Ob = Range(Cells(1, y), Cells(Ur, y)).Find("pippo", After:=Cells(1, y), SearchDirection:=xlNext)
            For x = 1 To N
                Rr = Ob.Row
                Cells(Rr + 3, y) = Cells(Rr + 1, y) * 5
                Cells(Rr + 3, y).Font.ColorIndex = 3
                Set Ob = Range(Cells(Rr, y), Cells(Ur, y)).FindNext
            Next x
        Next y
    Set Ob = Nothing
    MsgBox "Fatto"
    End Sub
  • OFFLINE
    mb63
    Post: 137
    Registrato il: 10/04/2014
    Città: TORINO
    Età: 61
    Utente Junior
    2010
    00 11/05/2021 18:13
    gentilissimo

    io avevo fatto come suggerito accondando le due sub per la colonna J e la colonna M, ma non essendo un espertissimo di VBA pensavo fosse un mio limite

    Grazie per la disponibilità

    Alla prossima e buona serata

  • 15MediaObject5,0014 1