incremento valore cella



  • incremento valore cella
    di Luna 95 (utente non iscritto) data: 09/12/2015 18:51:25

    Salve a tutti dovrei generare un contatore sulla colonna A e deve essere incrementato solo se la colonna B contiene un valore le celle interessate sono A6:B5000 Cella A = Contatore Cella B = Codice
    Esempio se nella cella B5 scrivo 00152B nella cella A5 deve essere inserito il valore 1
    Cella B8 ionserisco un codice 00158S nella cella A8 deve essere inserito il valore 2, in pratica la colonna A si deve incrementare di 1 ogni qulavolta nella colonna a fianco è inserito un codice, ho fatto l'esempio di B5 e poi B8 perche la colonna B può contenere delle celle vuote, la colonna A si deve incrementare solo quando la colonna B contiene un codice.



  • di cromagno data: 09/12/2015 20:31:36

    Ciao Luna,
    ti dimentichi sempre di allegare un file di esempio per capire esattamente la disposizione dei dati.

    Comunque, supponendo che nella riga 1 ci sono le intestazioni ("Contatore" e "Codice"), nella cella A2 scrivi:
    =SE(B2="";"";1)

    nella cella A3:
    =SE(B3="";"";MAX($A$2:A2)+1)

    e copi la cella A2 fino alla A5000.

    Ti lascio file allegato...

    [EDIT]
    È la cella A3 che devi copiare in basso.



  • di ninai data: 09/12/2015 22:14:11

    ciao
    cromagno
    come mai hai differenziato le formule???, non bastava direttamente in A2:
    =SE(B2="";"";MAX($A$1:A1)+1)



  • di cromagno data: 09/12/2015 22:21:49

    Ciao ninai, hai ragione ma non sapendo cosa ci può essere in A1 (per assurdo potrebbe esserci un numero) ho preferito prendereuna sicurezza in più.



  • di Luna 95 (utente non iscritto) data: 10/12/2015 18:24:54

    ciao cromagno la formula funziona a meraviglia, solo che è sorto un problema, ho un filtro sulla colonna A praticamente dove ci sono le formule, però non funziona, non riesco a capire perchè, allego il codice che ho rilevato da una precedente discussione su questo forum.
     
    Sub Filtra_Numero()
    
    Dim Cerco As String
    Dim Crit1 As String
    
     
      With Sheets("Lavori Subappalto")
        Cerco = InputBox("SCRIVI IL NOME DA CERCARE O PARTE DEL NOME")       
        If Cerco <> "" Then
        
        
        
          .Unprotect
          .Range("A6:E6").AutoFilter
          Crit1 = "=*" & Cerco & "*"
          .Range("A6:E6").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlAnd
          .Range("A6").Select
          .Protect , DrawingObjects:=False, Contents:=True, Scenarios:= _
                False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
                AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
                :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
                AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
                AllowUsingPivotTables:=True, userinterfaceonly:=True
        End If
      End With
    End Sub



  • di cromagno data: 10/12/2015 19:49:55

    Ciao Luna,
    allega il file con il problema che riscontri.



  • di Luna 95 (utente non iscritto) data: 10/12/2015 20:39:13

    Allego il file prova a fare una ricerca su numero?
    non filtra nessun valore



  • di cromagno data: 11/12/2015 03:51:17

    Ciao Luna,
    non credo tu possa usare gli operatori "Jolly" con i numeri, o meglio, puoi filtrare i valori che si trovano tra due numeri indicati da te, quindi (utilizzando magari 2 InputBox) potrai usare:
    Crit1 = ">=" & Cerco

    Altrimenti devi usare direttamente il valore che scrivi nella InputBox e quindi la riga del codice per la filtrazione diventerebbe così:
     
    .Range("A6:E6").AutoFilter Field:=1, Criteria1:=Cerco, Operator:=xlAnd



  • di Luna 95 (utente non iscritto) data: 11/12/2015 11:40:31

    ciao cromagno grazie per l'aito, ho provato a modificare il codice per far funzionare con due InputBox però non funziona, sicuramente sbaglio qualcosa, allego il codice se puoi dagli uno sguardo, Grazie ancora.
     
    Sub Filtra_Numero()
    
    Dim Cerco As String, Cerco2 As String
    Dim Crit1 As String
    
    
      With Sheets("Lavoro")
        Cerco = InputBox("SCRIVI IL 1° VALORE DA CERCARE")
         Cerco2 = InputBox("SCRIVI IL 2° VALORE DA CERCARE")
        
        If Cerco & Cerco2 <> "" Then
        'If Cerco <> "" Then
          .Unprotect
          .Range("A6:E6").AutoFilter
          'Crit1 = "=*" & Cerco & "*"
           Crit1 = ">=" & Cerco & Cerco2
          .Range("A6:E6").AutoFilter Field:=1, Criteria1:=Cerco, Operator:=xlAnd
          .Range("A6").Select
          .Protect , DrawingObjects:=False, Contents:=True, Scenarios:= _
                False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
                AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
                :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
                AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
                AllowUsingPivotTables:=True, userinterfaceonly:=True
        End If
      End With
    End Sub



  • di cromagno data: 11/12/2015 18:29:23

    Ciao,
    al momento ho solo il cellulare quindi provo a spiegartelo senza poter provare.
    Devi creare una seconda variabile Crit2 che servirà per prendere il valore scritto nella inputbox2. Le variabili, Crit1 e Crit2 devi definirle come "integer" e non come "string".
    Nel codice quindi le due righe dedicate a queste variabili saranno:

    Crit1 = ">=" & Cint(Cerco)
    Criit2 = "<=" & Cint(Cerco2)

    nella riga per filtrare, dopo operator:=xland metterai anche

    Criteria2:= Crit2

    e ricordati di modificaria il primo criterio cosi:

    Criteria1:= Crit1



  • di Luna 95 (utente non iscritto) data: 11/12/2015 20:21:57

    Ciao cromagno ho provato a fare le modifiche, ma mi da errore, nom vorrei abusare della tua bontà ma se possibile potresti modificare il codice allegato e poi provo ad eseguirlo? grazie ancora



  • di cromagno data: 12/12/2015 09:48:15

    Buongiorno,
    in effetti seguendo quello ti ho scritto ieri il VBA aveva tutte le ragioni di darti Errore...
    Ti lascio il file in allegato...

    Il codice per filtrare i numeri dovrebbe essere così:
     
     
    Sub Filtra_Numero()
    
    Dim Cerco1 As String, Cerco2 As String   'Cerco1 e Cerco2 sono le variabile con le quali prendiamo il valore che scriveremo nelle 2 inputBox
    Dim Crit1 As Variant, Crit2 As Variant   'Crit1 e Crit2 sono le variabili che servono per "legare" le variabili Cerco con uno o più operatori di confronto
    
      'With Sheets("Foglio1")
      With Sheets("Lavoro")
        Cerco1 = InputBox("INSERISCI IL VALORE MINIMO PER LA RICERCA")   'lanciamo la InputBox per richiedere di scrivere il minimo valore da filtrare
        Cerco2 = InputBox("INSERISCI IL VALORE MASSIMO PER LA RICERCA")  'lanciamo la InputBox per richiedere di scrivere il massimo valore da filtrare
        If Cerco1 <> "" And Cerco2 <> "" Then
          .Unprotect  'Rimuove protezione del foglio specificato
          .Range("A6:E6").AutoFilter
          Crit1 = ">=" & CInt(Cerco1)          'impostiamo una ricerca corrispondente a: tutti i valori compresi tra i valori della variabili Cerco1 e Cerco2
          Crit2 = "<=" & CInt(Cerco2)
          .Range("A6:E6").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlAnd, Criteria2:=Crit2     'applichiamo il filtro sulla cella di inizio tabella (Field = 1), 'contenente il 'nome contenuto nell'intestazione del campo della Colonna 1 (la A)
          .Range("A6").Select
          .Protect , DrawingObjects:=False, Contents:=True, Scenarios:= _
                False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
                AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
                :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
                AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
                AllowUsingPivotTables:=True, userinterfaceonly:=True
        End If
      End With
    End Sub



  • di Luna 95 (utente non iscritto) data: 12/12/2015 20:14:10

    Grazie ancora cromagno, adesso funziona tutto