estrarre serie di numeri



  • estrarre serie di numeri
    di Mak (utente non iscritto) data: 17/09/2016 15:29:13

    ciao non riesco a capire come fare, premetto che sono nuovo di excel
    dovrei estrarre una serie di numeri consecutivi da un nr, ad esempio ho 6 vorrei scrivere in una sola cella affianco 1,2,3,4,5,6

    come fare? grazie



  • di patel data: 17/09/2016 15:33:16

    non ho capito, allega un file di esempio con dati, spiegazioni e risultato desiderato





  • di Mak (utente non iscritto) data: 17/09/2016 15:42:18

    Grazie per la risposta
    ho allegato lo screen
    Quello che vorrei fare e trovare la serie di numeri in base a un valore e in base a condizioni
    Mi spiego meglio:
    Vorrei trovare la serie di C2 quindi vorrei 1,2,3
    Però come vedi in D17 la serie riparte dall'ultimo valore di D16 questo perchè B17 <> B16 e contestualmente A17=A16

    é un pò complicato da spiegare spero mi hai capito, se ti servono ulteriori info dimmi pure




  • di Mak (utente non iscritto) data: 17/09/2016 15:44:56

    Se B17<>B16 e A17=A16 Riparti serie da C16 a C17
    altrimenti
    Riparti serie da 1 a C17



  • di patel data: 17/09/2016 16:26:38

    ho chiesto un file excel, non uno screen





  • di Mak (utente non iscritto) data: 17/09/2016 16:30:57

    pardon ecco fatto



  • di mak (utente non iscritto) data: 17/09/2016 17:01:53

    Aiuto



  • di patel data: 17/09/2016 17:24:05

    ci vorrebbero più dati per fare un test, intanto prova questa macro
     
    Sub a()
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    r = 2
    inizio = 1
    Call serie(inizio, r)
    r = r + 1
    While Cells(r, "A") <> ""
      If Cells(r, "B") <> Cells(r - 1, "B") And Cells(r, "A") = Cells(r - 1, "A") Then
        inizio = Cells(r - 1, "C") + 1
        Call serie(inizio, r)
      Else
        If Left(Cells(r - 1, "D"), 1) <> "1" Then
          inizio = Val(Left(Cells(r - 1, "D"), 1))
        Else
          inizio = 1
        End If
        Call serie(inizio, r)
      End If
      r = r + 1
    Wend
    End Sub
    
    Sub serie(inizio, riga)
        s = ""
        For i = inizio To Cells(riga, "C")
          s = s & i & ","
        Next
        s = Left(s, Len(s) - 1)
        Cells(riga, "D") = s
    End Sub






  • di mak (utente non iscritto) data: 17/09/2016 17:40:48

    perfetta funziona alla grande
    solo che arriva fino a D22 poi si blocca e dice "errore run time 5 chiamata di routime o argomenti non validi

    ti allego il file nuovo con la macro



  • di patel data: 17/09/2016 18:33:50

    prova ora
     
    Sub a()
    LR = Cells(Rows.Count, "A").End(xlUp).Row
    r = 2
    inizio = 1
    Call serie(inizio, r)
    r = r + 1
    While Cells(r, "A") <> ""
    b1 = Cells(r, "B").Value
    b2 = Cells(r - 1, "B").Value
    A1 = Cells(r, "A").Value
    A2 = Cells(r - 1, "A").Value
      
      If Cells(r, "B") <> Cells(r - 1, "B") And Cells(r, "A") = Cells(r - 1, "A") Then
        inizio = Cells(r - 1, "C") + 1
        Call serie(inizio, r)
      Else
        p = InStr(Cells(r - 1, "D"), ",")
        If p = 0 Then p = 3 '<<<<<<<<<<<<<<
        inizio1 = Left(Cells(r - 1, "D"), p - 1)
        If inizio1 <> "1" Then
          inizio = Val(inizio)
          If inizio >= Cells(r, "C") Then inizio = 1
        End If
        Call serie(inizio, r)
      End If
      r = r + 1
    Wend
    End Sub
    
    Sub serie(inizio, riga)
        s = ""
        For i = inizio To Cells(riga, "C")
          s = s & i & ","
        Next
        s = Left(s, Len(s) - 1)
        Cells(riga, "D") = s
    End Sub






  • di mak (utente non iscritto) data: 17/09/2016 21:06:11

    sei un grande funziona grazie



  • di scossa data: 17/09/2016 21:32:57

    cit.: "... funziona"

    Confermi anche per le righe 316, 320, 333, 342, 413, 649 .... ?


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)



  • di patel data: 18/09/2016 08:16:49

    il mio è un codice con tante toppe aggiunte e sicuramente non è il massimo dell'efficienza, un intervento di scossa sarebbe gradito se non altro per capire come va affrontato un problema del genere.





  • di scossa data: 18/09/2016 09:46:37

    cit.: "...se non altro per capire come va affrontato un problema del genere"

    Boh, io avevo abbozzato il codice sotto, ma se dice che è corretto il tuo (vedi celle citate), mi viene il dubbio di non aver capito il problema.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)

     
    Sub Scomponi()
      'by scossa
      
      Dim sScomp As String
      Dim j As Long
      Dim nStart As Long
      Dim ws As Worksheet
      Dim cella As Range
      Dim nLR As Long
      
      Set ws = ActiveSheet
      nStart = 1
      nLR = ws.Cells(Rows.Count, 3).End(xlUp).Row
      For Each cella In ws.Range("C2:C" & nLR).Cells
        sScomp = ""
        If cella.Offset(0, -2) = cella.Offset(-1, -2) And _
          cella.Offset(0, -1) <> cella.Offset(-1, -1) Then
            nStart = cella.Offset(-1, 0) + 1
        End If
        If nStart >= cella.Value Then nStart = 1
        For j = nStart To cella.Value
          sScomp = sScomp & "," & j
        Next
        cella.Offset(0, 2) = Replace(sScomp, ",", "", 1, 1)
      Next
      Set ws = Nothing
    End Sub



  • di patel data: 18/09/2016 10:20:28

    direi che non se n'è accorto, guardando il tuo codice mi viene da dire:
    perché non l'ho impostato io così ? non era difficile !





  • di mak (utente non iscritto) data: 18/09/2016 12:59:35

    no ragazzi avete ragione
    alcune righe non vengono processate bene e allora ho provato un pò a smanettare il codice di patel
    ma non credo di aver fatto bene

    in questi giorni provo il codice di scossa
    Grazie ragazzi



  • di mak (utente non iscritto) data: 19/09/2016 18:24:16

    provata perfetto ora funziona benissimo
    grazie mille a tutti e 2