Excel e gli applicativi Microsoft Office copia valori su celle filtrate

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

    Alberto

      ciao, volevo allegarvi 1 file di esempio ma non riesco a trovare l'opzione allega....

      il codice sotto funziona se nelle colonne della tabella ho le celle compilate (col G,H,I dove vado a lavorare), se invece sono tutte celle vuote non va. mi potete aiutare?

      inoltre: COME POSSO COPIARE I VALORI AL POSTO DELLE FORMULE PER LE CELLE FILTRATE? DEVO PER FORZA SFILTRARE TUTTO?

      grazie1000

       

      Sub test()

      Selection.End(xlDown).Select
      nriga = Selection.Row

      ActiveSheet.Range("$A$10:$G$10").AutoFilter Field:=1, Criteria1:="sa"
      conta = Application.WorksheetFunction.CountIfs(Range("a:a"), "sa")
                 
                  If conta >= 1 Then
                 
                  Cells(1, 1).Value = "ho trovato " & conta & " volte sa"
                  Range(Range("G" & 11), Range("G" & Rows.Count).End(xlUp).Offset(1, 0)).Value = "ALLA GRANDE"
                 
                  Range("G1:H1").Select
                  Selection.Copy
                  Range(Range("H" & 11), Range("I" & Rows.Count).End(xlUp).Offset(1, 0)).Select
                  ActiveSheet.Paste
                
                  Calculate

      '            Range(Range("H" & Rows.Count), Range("I" & Rows.Count).End(xlUp).Offset(1, 0)).Select
       '           Selection.Copy
        '          Selection.PasteSpecial
                  Else
                  Cells(1, 1).Value = "non ho trovato niente"
                  End If
                 
      End Sub

      #15071 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        245 pts

        ha scritto:

        volevo allegarvi 1 file di esempio ma non riesco a trovare l'opzione allega

        Devi essere registrato al Forum per poter allegare file (e per poter leggere gli allegati).

        #15087 Score: 0 | Risposta

        ecco il file di esempio, grazie x supporto

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

        albatros54
        Moderatore
          83 pts

          vecchio frac ha scritto:

          ActiveSheet.Paste

          sostituisci la riga di codice sopra con questa

          Selection.PasteSpecial xlPasteValues

           Non Vecchio Frac , ma bensi Alberto(quote fa le bizze )

          Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
          Sempre il mare, uomo libero, amerai!
          ( Charles Baudelaire )
          #15109 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            245 pts

            Il quote fa le bizze con gli utenti non registrati, Admin ci sta lavorando ma non è di semplice soluzione.

            #15112 Score: 0 | Risposta

            albatros54
            Moderatore
              83 pts

              Alberto ha scritto:

              COPIARE

              Provale quota utenti non registrati X Admin 

              #15116 Score: 0 | Risposta

              Marius44
              Moderatore
                52 pts

                Buongiorno a  tutti

                Penso che la cosa migliore sia "disabilitare" il pulsante se un Utente non è registrato. Vuol dire che chi vuole "citare" fa il copia/incolla della frase ed indica l'Autore.

                Vista la difficoltà di sistemazione "interna" credo sia una soluzione praticabile.

                Ciao,

                Mario 

                #15117 Score: 0 | Risposta

                admin
                Amministratore del forum
                  1 pt

                  Buongiorno @marius44

                  il problema del quote è stato risolto   

                  #15124 Score: 0 | Risposta

                  ciao a tutti, grazie per il supporto, perfetto il  "Selection.PasteSpecial xlPasteValues", però ho ancora un problema, ovvero se il contenuto delle celle (nelle colonne G, H e I) è vuoto (a parte l'intestazione), la macro non fa quello che vorrei, ovvero non mi copia le informazioni desiderati nelle righe per cui nella colonna A c'è scritto "sa".

                  grazie ciao Alberto

                  #15135 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    245 pts

                    Io avrei riscritto il tuo codice in modo più semplice e funzionale. Nella maggior parte dei casi io preferisco non coinvolgere Copy e Paste (o PasteSpecial) soprattutto se devo copiare solo valori: è molto più veloce assegnare a un range la proprietà Value di un altro range. Vorrei anche raccomandare l'utilizzo di Option Explicit in testa ai vostri moduli.

                    Option Explicit
                    
                    Sub test()
                    Dim conta As Long
                    Dim r As Range
                    Dim rw As Range
                    
                        Range("A1").Select
                        ActiveSheet.Range("$A$10:$G$10").AutoFilter Field:=1, Criteria1:="sa"
                        conta = [COUNTIF(A:A, "sa")]
                        
                        If conta >= 1 Then
                        
                            Range("A1") = "ho trovato " & conta & " volte sa"
                            
                            Set r = Range("A10").CurrentRegion.SpecialCells(xlCellTypeVisible)
                            For Each rw In r.Rows
                                If rw.Row > 10 Then
                                    Range(rw.Cells(7), rw.Cells(8)).Value = Range("G1:H1").Value
                                End If
                            Next
                        Else
                            Cells(1, 1).Value = "non ho trovato niente"
                        End If
                        
                        ActiveSheet.AutoFilterMode = False
                        MsgBox "Finito"
                    End Sub
                    #15136 Score: 0 | Risposta

                    grazie mille vecchio frac, ho imparato nuove cose! sono molto soddisfatto

                    qualche curiosità: cosa serve l'istruzione option explicit?

                    invece questa istruzione: Range("A10").CurrentRegion.SpecialCells(xlCellTypeVisible) , si riferisce alla "matrice" filtrata?

                    infine con cells(7) e cells(8) indichi le colonne, io potrei indicizzare con delle variabili del tipo a=7 --> cells(a)

                    grazie ancora

                    Alberto

                    #15137 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      245 pts

                      camma ha scritto:

                      grazie mille vecchio frac, ho imparato nuove cose! sono molto soddisfatto

                      bene 🙂

                      camma ha scritto:

                      cosa serve l'istruzione option explicit?

                      Su questo argomento ci siamo espressi già molte volte in passato, ci vorrebbe una trattazione più lunga che poche righe, in sostanza è una direttiva all'interprete basic che gli fa controllare se le variabili sono state dichiarate prima di utilizzarle (le variabili si dichiarano con l'istruzione Dim la quale permette di stabilire il tipo di dati che sono destinate a contenere). La dichiarazione di variabili obbligatoria è un aiuto in più al programmatore, perchè gli fa evitare errori di battitura (se all'inizio usi "pippo" ma poi per la fretta assegni qualcosa a "piipo", il fatto non aver dichiarato prima la variabile che si intende utilizzare farà sì che venga creata una nuova variabile, perdendo il contenuto di quella vera, con conseguenze imprevedibili).

                      camma ha scritto:

                      si riferisce alla "matrice" filtrata?

                      camma ha scritto:

                      cells(7) e cells(8) indichi le colonne

                      Sì, con Set r = ... abbiamo creato un riferimento alle sole celle "visibili" del range filtrato. Il ciclo For successivo analizza le righe di questo range filtrato e punta come ben dici alle colonne 7 e 8 (colonna G e H). Naturalmente puoi indicizzare questo valore, e usare delle variabili al posto delle costanti.

                      #15140 Score: 0 | Risposta

                      Ciao ho un ulteriore quesito da porti, se volessi aggiungere 1 passaggio al codice da te scritto:

                      1) nel range filtrato copiare le formule prese da 1 cella e fare calcolare il risultato (magari con istruzione "calculate"?)

                      2) ottenuto il risultato, trasformarlo in valori, mi riferisco sempre al range filtrato (si può? o bisogna prima eliminare il filtro e copiare/incollare la colonna?)

                      grazie ancora,

                      ciao Alberto

                      #15142 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        245 pts

                        Preferirei un esempio concreto di risultato da ottenere, perchè spiegato così non ho capito molto. 

                        1) le formule prese da una cella? quale? del range filtrato o esterna ad esso? "calcolare il risultato" non si fa con Calculate (che è un'istruzione che dice a Excel di ricalcolarsi le formule) ma eventualmente con Evaluate (o scrivendo la medesima formula in VBA, che magari coinvolge più celle)

                        2) ti riferiresti al range filtrato per farci cosa? incollarci il risultato? hai visto dal mio codice che puoi assegnare a una cella direttamente un valore senza passare dal copia incolla, quindi non ho capito cosa intendi.

                        Alla fine, non ho capito il passaggio ulteriore che vuoi raggiungere 🙂

                        #15147 Score: 0 | Risposta

                        hai ragione, cerco di essere più chiaro. io ho in celle esterne al range filtrato delle formule che vorrei replicare una volta che applico il filtro, all'interno di alcune celle delle righe filtrate.

                        quindi una volta preso queste celle "esterne" e copiate nelle righe filtrate, la formula mi da il risultato e poi vorrei toglierla lasciando il risultato ottenuto in valori.

                        grazie

                        #15148 Score: 0 | Risposta

                        in altri casi invece per me è perfetto assegnare il valore senza passare dal copia e incolla come hai fatto tu

                        #15149 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          245 pts

                          Direi che anche nel caso della formula da calcolare, se poi alla fine ti serve solo il risultato, è inutile replicare le formule che si trovano in celle esterne al range filtrato, per poi consolidarle. Poichè sicuramente conosci già la formula (o le formule) in gioco, ti basta tradurle in VBA e ottenere così il valore da inserire nel range desiderato. In sostanza fai fare tutto al codice senza coinvolgere formule 🙂

                          Se la formula fosse una cosa tipo:

                          =E(A1=10;B1="pippo")

                          la corrispondete iastruzione VBA sarebbe così:

                          If A1 = 10 And B1 = "pippo" Then risultato = ...

                          e poi nella cella desiderata assegni semplicemente il valore di "risultato":

                          Range("cella in zona filtrata") = risultato

                           

                          #15150 Score: 0 | Risposta

                          ok perfetto a breve applico quanto mi hai detto.

                          Grazie

                           

                          Off topic: Ho creato una userform che mi lancia 1 calendario, come faccio a far si che quando si apre il calendario si posizioni sempre sulla data odierna? (ti servono info particolari, o esiste una istruzione che mi aiuti?)

                          ciao

                          #15151 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            245 pts

                            MacroPinguino86 ha scritto:

                            quando si apre il calendario si posizioni sempre sulla data odierna

                            Hai creato un calendario in una userform? o il calendario è un'applicazione esterna che viene lanciata dal tuo userform? è un controllo ActiveX? come vengono restituite le date quando ne scegli una? probabilmente lo si può impostare in avvio con calendar.SetDate ... oppure calendar.Date = ... (presupposto che si chiami "calendar"), impossibile per me essere più preciso, dovresti dirmi di più su questa implementazione del calendario.

                            #15152 Score: 0 | Risposta

                            Ho creato 1 calendario in una userform, ecco codice di seguito:

                            Private Sub CAL_DateClick(ByVal DateClicked As Date)

                            Foglio1.Select                
                            Range("M1").Value = DateClicked
                            Unload Me
                            End Sub

                            Private Sub Label1_Click()

                            End Sub

                            Private Sub UserForm_Click()

                            End Sub

                            Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
                            If CloseMode = vbFormControlMenu Then
                                Cancel = True
                                MsgBox "Usare apposito pulsante per chiudere"
                            End If
                            End Sub

                            Private Sub CommandButton1_Click()
                            Unload Me
                            Foglio6.Range("L1").Value = 1
                            End Sub

                            #15154 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              245 pts

                              Immagino che "CAL" sia il controllo calendario.

                              Nell'evento Initialize del tuo Userform dovrebbe bastare questo:

                              CAL.Value = Date

                              per impostare la data odierna.

                              #15155 Score: 0 | Risposta

                              si esatto, avevo provato anche io ma non va, forse non lo fa perché (non so se è giusto ciò che ti sto per dire) è di tipo dateclick?

                              il calendario mostra sempre quello che lascio visualizzato nella userform

                              #15156 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                245 pts

                                Dovrei installarmi il controllo e provare

                                #15157 Score: 0 | Risposta

                                ciao, ma ti devo passare il file? ... scusa non ho capito

                                #15158 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  245 pts

                                  No sarebbe inutile perchè comunque non avrei il controllo installato... però potresti dirmi che controllo calendario hai installato, ce ne sono diversi 🙂

                                Login Registrati
                                Stai vedendo 25 articoli - dal 1 a 25 (di 42 totali)
                                Rispondi a: copia valori su celle filtrate
                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                Le tue informazioni: