Excel e gli applicativi Microsoft Office Disporre i valori di una cella in più celle

Login Registrati
Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
  • Autore
    Articoli
  • #53297 Score: 0 | Risposta

    Frasubb
    Partecipante
      1 pt

      Ciao a tutti,

       ho questa situazione: nella cella A1 sono contenuti i valori 10, 20, 30 e 40. 

       Come posso far sì che il valore 10 rimanga in A1, il 20 vada ad essere scritto in A2, il 30 in A3 ed il 40 in A4, creando quindi le necessarie nuove righe,  senza però far tutto ciò manualmente  ?

       C’è un modo ?

       Grazie mille

       

      #53298 Score: 0 | Risposta

      alexps81
      Moderatore
        55 pts

        Mentre restiamo in attesa che alleghi un file di esempio che rispecchia la reale situazione, prova a dare una lettura alla funzione Split che combinata ad un ciclo For dovrebbe fare ciò che chiedi. Magari nel file che alleghi prova a fare un tentativo come suggerito.

         

        #53299 Score: 0 | Risposta

        sgmmar
        Partecipante
          3 pts

          Puoi usare testo in colonne e poi il trasponi dell'incolla speciale oppure registrare una macro che faccia le due cose in sequenza

          #53300 Score: 0 | Risposta

          LukeReds
          Partecipante
            13 pts

            ciao,se vuoi il risultato nella stessa colonna di partenza (cella A1 in particolare) ci vuole il vba, se invece va bene il risultato anche in colonna B (ad esempio), con i numeri 10,20,30,40 (o altri) in A1

            Excel 365, in B1 (si espande da sola)

            =DIVIDI.TESTO(A1;;",")

            Versione di excel < 365, in B1 e trascini in basso

            =ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI($A$1;",";RIPETI(" ";50));50*RIF.RIGA(A1)-49;50))

            Come già suggerito, se invece vuoi i risultati a partire da A1 

            Sub DividiN()
            Dim num, i As Integer
            num = Split(Range("A1"), ",")
            For i = 0 To UBound(num)
               Cells(i + 1, 1) = num(i)
            Next i
            End Sub

             

            #53311 Score: 0 | Risposta

            sgmmar
            Partecipante
              3 pts

              LukeReds ha scritto:

              ciao,se vuoi il risultato nella stessa colonna di partenza (cella A1 in particolare) ci vuole il vba

               non lo sapevo 

              alternativa con i passaggi del post #53299 registrati e macro rivista

              Sub a()
              Application.ScreenUpdating = False
                  Range("A1").Activate
                  Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                      Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                      :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
                      True
                  Range("A1:D1").Copy
                  Range("E1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                      False, Transpose:=True
                  Columns("A:D").Delete Shift:=xlToLeft
                  Application.CutCopyMode = False
                  Range("a1").Activate
              Application.ScreenUpdating = True
              End Sub
              #53312 Score: 0 | Risposta

              Frasubb
              Partecipante
                1 pt

                alexps81 ha scritto:

                Mentre restiamo in attesa che alleghi un file di esempio che rispecchia la reale situazione

                allego file esempio e preciso che nel mio pacchetto office prof plus 2019 non c'è la funzione DIVIDI (split)

                Ci sono alternative ?

                Grazie mille

                Allegati:
                You must be logged in to view attached files.
                #53315 Score: 0 | Risposta

                sgmmar
                Partecipante
                  3 pts

                  intanto che aspetti l'intervento di Alex, potresti provare la soluzione proposta #53311

                  #53317 Score: 0 | Risposta

                  gianfranco55
                  Partecipante
                    90 pts

                    ciao

                    da tirare in basso

                    =SE.ERRORE(FILTRO.XML("<d>"&SOSTITUISCI($A$1;",";"")&"</d>";"//a["&RIF.RIGA(A1)&"]");"")

                    #53318 Score: 0 | Risposta

                    Frasubb
                    Partecipante
                      1 pt

                      gianfranco55 ha scritto:

                      ciao

                      ciao Gianfranco, ti ringrazio per l'aiuto ma non mi funziona

                      #53319 Score: 0 | Risposta

                      Frasubb
                      Partecipante
                        1 pt

                        sto provando le vostre soluzioni, ma non so farle funzionare.

                        Invece che il file esempio, allego il file reale che contiene le stringhe di testo, da dividere una per cella

                         

                        Allegati:
                        You must be logged in to view attached files.
                        #53321 Score: 0 | Risposta

                        LukeReds
                        Partecipante
                          13 pts

                          per far funzionare una soluzione devi adattarla al tuo caso, mettendo la/le celle corrette... 

                          #53322 Score: 0 | Risposta

                          Frasubb
                          Partecipante
                            1 pt

                            LukeReds ha scritto:

                            per far funzionare una soluzione devi adattarla al tuo caso, mettendo la/le celle corrette... 

                            si certo, a questo ci ero arrivato, ma nel tuo codice c'è indicata solo una cella (A1), io metto B1 per partire da qui con i risultati, ma non funziona lo stesso. 

                            Sub DividiN()
                            Dim num, i As Integer
                            num = Split(Range("B1"), ",")
                            For i = 0 To UBound(num)
                               Cells(i + 1, 1) = num(i)
                            Next i
                            End Sub
                            #53323 Score: 0 | Risposta

                            alexps81
                            Moderatore
                              55 pts

                              Prova questo codice (il risultato da "B3" in giù):

                              Option Explicit
                              
                              Sub dividi()
                                  Dim dict As Object
                                  Dim ur As Long, i As Long, j As Long, k As Long
                                  Dim item As Variant
                                  
                                  ur = Cells(Rows.Count, "A").End(xlUp).Row
                                  Set dict = CreateObject("Scripting.Dictionary")
                                  
                                  For i = 1 To ur
                                      If Trim(Range("A" & i).Value) <> "" Then
                                          item = Split(Range("A" & i).Value, ",")
                                          For j = LBound(item) To UBound(item)
                                              dict.Add k, Trim(item(j))
                                              k = k + 1
                                          Next j
                                      End If
                                  Next i
                                  
                                  If k > 0 Then
                                      Range("B3").Resize(k, 1).Value = Application.Transpose(dict.items)
                                  End If
                              End Sub
                              
                              #53324 Score: 0 | Risposta

                              gianfranco55
                              Partecipante
                                90 pts

                                ciao

                                ti ci vuole il vba per inserire anche le righe

                                comunque questa

                                =SE.ERRORE(FILTRO.XML("<d>"&SOSTITUISCI($A$1;",";"")&"</d>";"//a["&RIF.RIGA(A1)&"]");"")

                                se hai office prof plus 2019  funziona

                                solo che tu non hai solo A1 ma una sfilza di righe

                                #53325 Score: 0 | Risposta

                                LukeReds
                                Partecipante
                                  13 pts

                                  tra la richiesta iniziale ed il file allegato dopo c'è ben poco in comune, ovvio che quanto proposto non funzioni.

                                  Se hai excel 365, dove vuoi (si espande da sola)

                                  =DIVIDI.TESTO(TESTO.UNISCI(",";;A3:A908);;",")

                                  Per il file che hai allegato, vba che scrive in colonna B

                                   

                                  Sub DividiN()
                                  Dim i As Integer, r As Integer, j As Integer
                                  r = 3
                                  For i = 3 To Range("A" & Rows.Count).End(xlUp).Row
                                     If InStr(Cells(i, 1), ",") = 0 Then
                                        Cells(r, 2) = Cells(i, 1):  r = r + 1
                                     Else
                                        For j = 0 To UBound(Split(Cells(i, 1), ","))
                                           Cells(r, 2) = Split(Cells(i, 1), ",")(j): r = r + 1
                                        Next j
                                     End If
                                  Next i
                                  End Sub
                                Login Registrati
                                Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
                                Rispondi a: Disporre i valori di una cella in più celle
                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                Le tue informazioni: