Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [excel] "popolare" una riga con gli elementi risultanti doppi nelle due superiori

    Cerco di spiegarmi meglio... con un'immagine... (in allegato)

    Avrei bisogno di "riempire in modo automatico" la riga mix (verde) con i valori risultanti "doppi" ed evidenziati in rosso presenti nelle due righe subito soprastanti [sono tutti valori numerici]

    Per adesso risolvo... riportandoli a mano...

    Grazie a tutti gli esperti e tutte le esperte che daranno un loro parere al riguardo.

    riempimento-automatico-riga-mix.jpg
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  2. #2
    Quote Originariamente inviata da freetom Visualizza il messaggio
    Cerco di spiegarmi meglio... con un'immagine... (in allegato)

    Avrei bisogno di "riempire in modo automatico" la riga mix (verde) con i valori risultanti "doppi" ed evidenziati in rosso presenti nelle due righe subito soprastanti [sono tutti valori numerici]

    Per adesso risolvo... riportandoli a mano...

    Grazie a tutti gli esperti e tutte le esperte che daranno un loro parere al riguardo.

    riempimento-automatico-riga-mix.jpg
    Ciao freetom,
    una cosa del genere si fa molto facilmente in VBA ma mi serve qualche informazione in più riguardo all'individuazione delle righe e alla loro lunghezza perché a VBA bisogna dare indicazioni precise su dove cercare i dati duplicati e dove scrivere il risultato.

    Si tratta, come nell'immagine, di una sola coppia di righe e quindi di una sola "terza riga" o la cosa va ripetuta per tutte le ruote?

    I dati sono posizionati in righe/colonne fisse o la posizione può variare?

    Le righe hanno una lunghezza massima?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Quote Originariamente inviata da NonCeLaFaccio+ Visualizza il messaggio
    Ciao freetom,
    una cosa del genere si fa molto facilmente in VBA ma mi serve qualche informazione in più riguardo all'individuazione delle righe e alla loro lunghezza perché a VBA bisogna dare indicazioni precise su dove cercare i dati duplicati e dove scrivere il risultato.

    Si tratta, come nell'immagine, di una sola coppia di righe e quindi di una sola "terza riga" o la cosa va ripetuta per tutte le ruote?

    I dati sono posizionati in righe/colonne fisse o la posizione può variare?

    Le righe hanno una lunghezza massima?
    Grazie per la risposta grandissimo

    Si tratta, come nell'immagine, di una sola coppia di righe e quindi di una sola "terza riga" o la cosa va ripetuta per tutte le ruote?

    Andrebbe ripetuta per tutte le ruote BA-CA-FI-GE-MI-NA-PA-RM-TO-VE-NZ

    Le righe hanno una lunghezza massima?

    SI 43 celle


    I dati sono posizionati in righe/colonne fisse o la posizione può variare?

    Le celle dei gruppi per ogni ruota costituiti dalle 3 le righe interessate sono sempre nelle stesse posizioni (ovviamente in sottorighe sottostanti... l'una all'altra...) ma i numeri in esse contenute possono variare (ti allego immagine allargata per darti un'idea)


    Grazie mille noncelafaccio+ !
    Immagini allegate Immagini allegate
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  4. #4
    Questo script dovrebbe fare quello che ti serve:

    codice:
    Private Sub CommandButton1_Click()
    
       Set cella_ax_sx = [C3]
    
       prima_colonna = cella_ax_sx.Column
       ultima_colonna = prima_colonna + 42
       prima_riga = cella_ax_sx.Row
       ultima_riga = prima_riga + 40
    
       For riga = prima_riga To ultima_riga Step 4
          Rows(riga + 2).Clear
          i = prima_colonna
    
          For cella1 = prima_colonna To ultima_colonna
    
             For cella2 = prima_colonna To ultima_colonna
    
                If Cells(riga, cella1) = Cells(riga + 1, cella2) Then
                   Cells(riga + 2, i) = Cells(riga, cella1)
                   i = i + 1
                   Exit For
                End If
    
             Next
    
          Next
    
       Next
    
    End Sub
    Devi solo associarlo ad un pulsante ActiveX (credo che tu sappia come si fa).

    Dall'immagine mi è sembrato di capire che il primo dato in alto a sinistra (il 2 su fondo arancio tanto per capirci) si trova nella cella C3, vero? Se non è così aggiorna la prima riga del codice.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Quote Originariamente inviata da NonCeLaFaccio+ Visualizza il messaggio
    Questo script dovrebbe fare quello che ti serve:

    codice:
    Private Sub CommandButton1_Click()
    
       Set cella_ax_sx = [C3]
    
       prima_colonna = cella_ax_sx.Column
       ultima_colonna = prima_colonna + 42
       prima_riga = cella_ax_sx.Row
       ultima_riga = prima_riga + 40
    
       For riga = prima_riga To ultima_riga Step 4
          Rows(riga + 2).Clear
          i = prima_colonna
    
          For cella1 = prima_colonna To ultima_colonna
    
             For cella2 = prima_colonna To ultima_colonna
    
                If Cells(riga, cella1) = Cells(riga + 1, cella2) Then
                   Cells(riga + 2, i) = Cells(riga, cella1)
                   i = i + 1
                   Exit For
                End If
    
             Next
    
          Next
    
       Next
    
    End Sub
    Devi solo associarlo ad un pulsante ActiveX (credo che tu sappia come si fa).

    Dall'immagine mi è sembrato di capire che il primo dato in alto a sinistra (il 2 su fondo arancio tanto per capirci) si trova nella cella C3, vero? Se non è così aggiorna la prima riga del codice.
    Cambiando C3 in C2 e 40 in 46 funziona perfettamenteee! grazie mille virtual friend noncelafaccio+ espertissimooo!

    Per quanto riguarda la possibilità di cancellare in automatico il contenuto delle ultime 2 righe per ciascuna ruota mi sapresti dire cosa incollare nel bottone activex relativo?
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  6. #6
    Quote Originariamente inviata da freetom Visualizza il messaggio
    Cambiando C3 in C2 e 40 in 46 funziona perfettamenteee! grazie mille virtual friend noncelafaccio+ espertissimooo!

    Per quanto riguarda la possibilità di cancellare in automatico il contenuto delle ultime 2 righe per ciascuna ruota mi sapresti dire cosa incollare nel bottone activex relativo?
    Quando troverai l'algoritmo giusto ricordati dei virtual friends

    Sai che il 46 non lo capisco, come lo hai ottenuto?

    Le variabili prima_riga e ultima_riga indicano la prima e l'ultima fra le "prime righe" che sono quelle a cui punta il ciclo principale, una volta puntata la prima riga di ogni tripletta il puntamento alla seconda e terza riga viene fatto con riga+1 e riga+2.

    In definitiva, quindi, se è vero che
    - la prima riga è in riga 2
    - ogni tripletta occupa 4 righe (perché ce n'è anche una vuota)
    - le triplette sono 11
    ne deriva che l'ultima delle prime righe è in riga 42, cioè 2+40, non 2+46.

    Comunque il 46 non fa danni, fa fare solo un paio di giri a vuoto in più.

    Riguardo all'altra domanda non ho capito cosa vuoi cancellare.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Quote Originariamente inviata da NonCeLaFaccio+ Visualizza il messaggio
    Quando troverai l'algoritmo giusto ricordati dei virtual friends

    Sai che il 46 non lo capisco, come lo hai ottenuto?

    Le variabili prima_riga e ultima_riga indicano la prima e l'ultima fra le "prime righe" che sono quelle a cui punta il ciclo principale, una volta puntata la prima riga di ogni tripletta il puntamento alla seconda e terza riga viene fatto con riga+1 e riga+2.

    In definitiva, quindi, se è vero che
    - la prima riga è in riga 2
    - ogni tripletta occupa 4 righe (perché ce n'è anche una vuota)
    - le triplette sono 11
    ne deriva che l'ultima delle prime righe è in riga 42, cioè 2+40, non 2+46.

    Comunque il 46 non fa danni, fa fare solo un paio di giri a vuoto in più.

    Riguardo all'altra domanda non ho capito cosa vuoi cancellare.
    Infatti bastava allungare di qualche riga per comprendere anche la nazionale e si vede con il 46 ci sono arrivato empiricamente...

    Per quanto riguarda il ricordarmi dei virtual friend in caso di algoritmo vincente continuativo... contaci !

    Infine per cercare di spiegarti visivamente cosa vorrei poter cancellare in automatico con un click dopo ogni utilizzo... ti allego un'altra immagine spero esaustiva. altrimeni lo sai puoi scrivermi 24h su 24

    Grazie ancora vf
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Mi sono accorto che purtroppo l'immagine esplicativa non è stata allegata nella mia precedente risposta. Provo a rimediare con questa aggiunta... ciao e grazie di nuovo

    img-righe-allargata-cosa-mi-piacerebbe-cancellare.jpg
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  9. #9
    Quindi le ruote in tutto sono 12 compresa la nazionale e la "tutte", ok, ho capito, però allora per fare le cose pulite aggiungi 44, non 46.

    Per la cancellazione puoi associare questo codice ad un altro pulsante

    codice:
    Private Sub CommandButton2_Click()
       Set cella_ax_sx = [C2]
       prima_colonna = cella_ax_sx.Column
       ultima_colonna = prima_colonna + 42
       prima_riga = cella_ax_sx.Row + 1
       ultima_riga = prima_riga + 44
       For riga = prima_riga To ultima_riga Step 4
          Range(Cells(riga, prima_colonna), Cells(riga, ultima_colonna)).Clear
          Range(Cells(riga + 1, prima_colonna), Cells(riga + 1, ultima_colonna)).Clear
       Next
    End Sub

    Come vedi in questo caso il puntamento è alla riga centrale di ogni tripletta e la seconda riga da cancellare è ottenuta aggiungendo 1 a quella puntata mentre il salto da una tripletta all'altra è affidato al solito step 4.

    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  10. #10
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    Quote Originariamente inviata da NonCeLaFaccio+ Visualizza il messaggio
    Quindi le ruote in tutto sono 12 compresa la nazionale e la "tutte", ok, ho capito, però allora per fare le cose pulite aggiungi 44, non 46.

    Per la cancellazione puoi associare questo codice ad un altro pulsante

    codice:
    Private Sub CommandButton2_Click()
       Set cella_ax_sx = [C2]
       prima_colonna = cella_ax_sx.Column
       ultima_colonna = prima_colonna + 42
       prima_riga = cella_ax_sx.Row + 1
       ultima_riga = prima_riga + 44
       For riga = prima_riga To ultima_riga Step 4
          Range(Cells(riga, prima_colonna), Cells(riga, ultima_colonna)).Clear
          Range(Cells(riga + 1, prima_colonna), Cells(riga + 1, ultima_colonna)).Clear
       Next
    End Sub

    Come vedi in questo caso il puntamento è alla riga centrale di ogni tripletta e la seconda riga da cancellare è ottenuta aggiungendo 1 a quella puntata mentre il salto da una tripletta all'altra è affidato al solito step 4.
    FUNZIONA ALLA PERFEZIONE! (come sempre... dato il mago di programmatore che sei!)

    Nessuna certezza solo probabilità ma se vuoi butta un eurino per E/A su FI GE 40.56

    Sarei felicissimo di poterti contraccambiare un po' con un ambo a colpo [cosa comunque molto improbabile quindi in ogni caso non farci troppo la bocca] Ciaooo!
    "Vero sapiente è colui che sa di non sapere" (Socrate)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.