Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-11-2015, 21:17   #1
Picchio75
Junior Member
 
Iscritto dal: Nov 2015
Messaggi: 2
Algoritmo fusione array (bilanciato)

Buonasera a tutti,
sto cercando di risolvere un problema e non riesco a trovare la soluzione. Provo a descrivere velocemente il problema.
In un foglio di lavoro EXCEL dati due elenchi di dati (es. colonna A e colonna B) devo creare una terza colonna che sia la fusione delle prime due.
Fin qui tutto bene se non che questa terza colonna deve avere gli elementi di A e B bilanciati ed ordinati, ovvero, l'elenco con elementi minore (es. B) deve essere distribuito nell'elenco totale (C) distribuito equamente tra l'elenco con maggiore elementi (es. A)

Esempio

Colonna A (il trattino - separa gli elementi delle varie caselle)
A-B-C-D-A-B-C-D-A-B-C-D-A-B-C-D

Colonna B (il trattino - separa gli elementi delle varie caselle)
1-2-3-3-4

Il risultato nella colonna C deve essere il seguente:
A-B-C-1-D-A-B-2-C-D-A-3-B-C-D-3-A-B-C-4-D

L'algoritmo potrebbe essere dividere il numero degli elementi della lista maggiore per quello della lista degli elementi minore. Nell'esempio 16:5=3,2
Dispongo gli elementi della lista B ogni 3 elementi della lista A.

Tutto bene se non che quando le liste diventano estremamente lunghe i "resti" che si lasciano per strada pesano alla fine del "merge" facendo si che gli elementi della lista minore si distribuiscano non omogeneamente tra gli elementi della lista maggiore.

Non riesco a trovare l'algoritmo corretto per poter poi codificare la macro in VBA che mi faccia questo lavoro. Qualcuno può aiutarmi?

Grazie
Pablo
Picchio75 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2015, 15:45   #2
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Vedi se questo codice fa al caso tuo:
Codice:
Public Sub merge()
Dim s   As Worksheet
Dim na  As Integer
Dim nb  As Integer
Dim a   As Integer
Dim b   As Integer
Dim lb  As Integer
Dim c   As Integer
    Set s = ActiveSheet
    Call clean(s, 3)
    na = conta(s, 1)
    nb = conta(s, 2)
    For a = 1 To na
        b = 1 + (a - 1) / (na - 1) * (nb - 1)
        c = c + 1
        s.Cells(c, 3).Value = s.Cells(a, 1).Value
        If b > lb Then
            c = c + 1
            s.Cells(c, 3).Value = s.Cells(b, 2).Value
            lb = b
        End If
    Next a
End Sub

Private Function conta(s As Worksheet, col As Integer) As Integer
Dim i   As Integer
    i = 1
    Do While s.Cells(i, col).Value <> ""
        i = i + 1
    Loop
    conta = i - 1
End Function

Private Sub clean(s As Worksheet, col As Integer)
Dim i   As Integer
    i = 1
    Do While s.Cells(i, col).Value <> ""
        Call s.Cells(i, col).Clear
        i = i + 1
    Loop
End Sub
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2015, 21:14   #3
Picchio75
Junior Member
 
Iscritto dal: Nov 2015
Messaggi: 2
Funziona.

Grazie 1000 Daniel


Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Vedi se questo codice fa al caso tuo:
Codice:
Public Sub merge()
Dim s   As Worksheet
Dim na  As Integer
Dim nb  As Integer
Dim a   As Integer
Dim b   As Integer
Dim lb  As Integer
Dim c   As Integer
    Set s = ActiveSheet
    Call clean(s, 3)
    na = conta(s, 1)
    nb = conta(s, 2)
    For a = 1 To na
        b = 1 + (a - 1) / (na - 1) * (nb - 1)
        c = c + 1
        s.Cells(c, 3).Value = s.Cells(a, 1).Value
        If b > lb Then
            c = c + 1
            s.Cells(c, 3).Value = s.Cells(b, 2).Value
            lb = b
        End If
    Next a
End Sub

Private Function conta(s As Worksheet, col As Integer) As Integer
Dim i   As Integer
    i = 1
    Do While s.Cells(i, col).Value <> ""
        i = i + 1
    Loop
    conta = i - 1
End Function

Private Sub clean(s As Worksheet, col As Integer)
Dim i   As Integer
    i = 1
    Do While s.Cells(i, col).Value <> ""
        Call s.Cells(i, col).Clear
        i = i + 1
    Loop
End Sub
Picchio75 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
HONOR pubblica The Sea Between Us, un co...
L'Olanda punta su NixOS e open source pe...
OPPO Find X10 Pro Max, il flagship con t...
Gli smartphone Samsung potrebbero avere ...
GeForce Now arriverà sui Googlebo...
Opus 5.5 e GPT-6 Sol nello stesso pomeri...
Weekend Amazon, le prime 5 offerte sono ...
Mini Compressore a 21,84€: gonfia le gom...
Gemini si aggiorna, ora può conne...
Da 32 a 65 pollici: ecco le TV più...
Xiaomi Redmi Note 17 a 269€: ecco perch&...
ASUS avverte i clienti: accesso non auto...
Già record di vendite su Amazon p...
Eni mette un tetto ai prezzi dei carbura...
BYD Seagull (Dolphin Surf), l'elettrica ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v