Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel] automatisch kolommen optellen

Pagina: 1
Acties:

  • Ierlandfan
  • Registratie: Augustus 2002
  • Laatst online: 24-11 21:54
Ik heb het volgende:

ik wil een bestand genereren wat alle mogelijke waardes tussen
aaaa0000 en:
ZZZZ9999
weergeeft.

Ik heb alles in 8 kolommen en 52 rijen gezet.
dat kan met de functie: =CONCATENATE(A1;B1;C1;D1;E1;F1;G1;H1) bijvoorbeeld.
Dat laat alle data in kolom A1 t/m H1 zien=aaaa0000

Echter ik wil alle mogelijke tussencombinaties automatisch genereren
Beginnende bij CONCATENATE(A1;B1;C1;D1;E1;F1;G1;H1)
en eindigende bij CONCATENATE(A52;B52;C52;D52;E10;F10;G10;H10)

Hoe kan ik dat het snelste aanpakken?
Ik weet dat er een functie +1 bestaat maar hoe werkt dat ook al weer?

  • --Niels--
  • Registratie: September 2004
  • Laatst online: 13:39
Gewoon de formule kopiëren en plakken, dan past Excel automatisch de formule aan.
Je kunt ook de formule naar beneden trekken, door de cel met de formule te selecteren en dan rechtsonder op het vierkantje te klikken en de muis vast te houden.
Of is dat niet wat je bedoelt?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Ierlandfan
  • Registratie: Augustus 2002
  • Laatst online: 24-11 21:54
Ik had het "waar hoort mijn topic thuis" toch echt 3x doorgelezen....
Maar ik had met wat hulp van Google en puur geluk het uiteindelijk gevonden..


Nou, dit is hem geworden...hij is alleen wat traag dus daar moet ik wat op vinden
Genereert +- 1000 mogelijkheden per seconden, dat moet sneller kunnen
Maar voor de historie en voor anderen:

Het is een VB module

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub combine_columns()
Dim char As Variant
Dim char1 As Variant
Dim char2 As Variant
Dim char3 As Variant
Dim cipher As Variant
Dim cipher1 As Variant
Dim cipher2 As Variant
Dim cipher3 As Variant

Range("K1").Select 'Change as appropriate
    For Each char In Range("A1:A52") 'Change as appropriate
    For Each char1 In Range("B1:B52")  'Change as appropriate
    For Each char2 In Range("C1:C52")  'Change as appropriate
    For Each char3 In Range("D1:D52") 'Change as appropriate
    For Each cipher In Range("E1:E10") 'Change as appropriate
    For Each cipher1 In Range("F1:F10") 'Change as appropriate
    For Each cipher2 In Range("G1:G10") 'Change as appropriate
    For Each cipher3 In Range("H1:H10") 'Change as appropriate
        ActiveCell.Formula = char & char1 & char2 & char3 & cipher & cipher1 & cipher2 & cipher3
        ActiveCell.Offset(1, 0).Select
    Next
Next
    Next
        Next
            Next
        Next
    Next
Next
Range("K1").Select
End Sub

[ Voor 6% gewijzigd door Ierlandfan op 25-03-2008 00:27 ]


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 12:05
Je hebt te maken met 73.116.160.000 combinaties (52^4 x 10^4). Met een snelheid van 1.000 per seconde ben je ruim 2 jaar bezig. :)

Heb je ook een 750GB harddisk (uitgaande van 8+1 karakters per combinatie) klaar staan om het bestand op op te slaan?

Bedenk eerst of dit de meest geschikte weg is om te bereiken wat je echt wilt !!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Is dat VBS of VBA?
Bolukan schreef op donderdag 20 maart 2008 @ 10:53:
Bedenk eerst of dit de meest geschikte weg is om te bereiken wat je echt wilt !!
Inderdaad.

Om te beginnen wil je trouwens ([code] tags gebruiken om het leesbaar te maken en) Application.ScreenUpdating = False doen (en weer true na afloop). Dat scheelt een grote slok op een borrel.

Maar waarom in Excel? Genereer een lijst buiten Excel om, gewoon naar een txtfile, en je bent er met een copypaste actie. Of afhankelijk van je doel beter: genereer de strings direct in de functie waarvoor je het wilt gebruiken, zonder ooit 'op papier' te zetten. Zie de berekening hierboven ;)

Edit: enneuh, is Excel hoe dan ook wel het juiste tool voor dergelijke bewerkingen (kan het dergelijke hoeveelheden data aan? Wat is er dan de performance? Hoe groot is de kans dat het niet crasht)? In mijn nederige ervaring niet :P

[ Voor 15% gewijzigd door F_J_K op 20-03-2008 11:10 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Ierlandfan schreef op woensdag 19 maart 2008 @ 18:57:
Ik heb het volgende:

ik wil een bestand genereren wat alle mogelijke waardes tussen
aaaa0000 en:
ZZZZ9999
weergeeft.
Ik kan uit jouw TS niet opmaken wat je wil. Wat moet de 2e waarde zijn:

baaa000 of aaaa0001 of (etc.)

??

Verwijderd

Ik ga er even vanuit dat je van aaaa0000 naar aaaa9999 gaat en daarna naar aaab0000.

Je kan dit alleen doen als je Excel 2007 hebt anders heb je gewoon te weinig cellen (meerdere bladen lijkt me sowieso niet handig). Ook 2007 heeft niet genoeg rijen dus je moet de boel splitsen.

Je maakt een vector:

0000
..
9999 (10^4 lang)

en

aaaa
..
zzzz (26^4 lang).

Eerste vector is triviaal (het maken), laatste vector kan je maken door ...

============

Dit gaat gewoon niet werken in Excel, ik raad aan om bijvoorbeeld Matlab te gebruiken. Is een simpel programma en kan enorme data-sets aan (slechts beperkt door syssteemgeheugen).

  • Ierlandfan
  • Registratie: Augustus 2002
  • Laatst online: 24-11 21:54
Heb je ook een 750GB harddisk (uitgaande van 8+1 karakters per combinatie) klaar staan om het bestand op op te slaan?
k ga er even vanuit dat je van aaaa0000 naar aaaa9999 gaat en daarna naar aaab0000.
Je kan dit alleen doen als je Excel 2007 hebt anders heb je gewoon te weinig cellen (meerdere bladen lijkt me sowieso niet handig). Ook 2007 heeft niet genoeg rijen dus je moet de boel splitsen.
1. ja, het is de bedoeling een text bestand te genereren omdat wordlists sneller gaan. Rechstreeks naar stdin betekent dubbel rekenkracht. ik wil dat splitsen met 2 computers.
2. Helemaal goed aaaa0000 aaab0000 etc etc.
3. I know, iets met max +-656.000 cellen in Excel 2003

Het maakt me niet uit met welk programma het gedaan wordt als het maar +- 500.000 ¬ 1.000.000
per seconde genereert. Wellicht standalone C code of iets dergelijks. De VB code was een opzet. Meer omdat ik geen (google) search code/functie in C wist.

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 12:05
Heb je al uitgerekend hoeveel MB je nodig hebt voor deze lijst. Die 750GB harddisk was GEEN grapje....

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ierlandfan schreef op vrijdag 21 maart 2008 @ 14:05:
Meer omdat ik geen (google) search code/functie in C wist.
offtopic:
Er is een Google Code, maar het enige dat simpeler is dan wat je vraagt is 'hello world'. Dus code zoeken lijkt me overdreven, lees een boek ;)

Je bent IMHO niet handig bezig. Het gaat zeker niet sneller als je het via een file doet. Integendeel.

Wat wil je eigenlijk?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Ierlandfan
  • Registratie: Augustus 2002
  • Laatst online: 24-11 21:54
73.116.160.000 /1.000.000 p/s = 73116.16 seconden /3600 (=1 uur) = 20 uur......
73.116.160.000 /200.000 p/s = 73116.16 seconden /3600 (=1 uur) = +- 4 dagen
Dat is ook acceptabel.

De "Google" code was een ongelukkige woordkeuze. Ik bedoelde zoekwoorden in Google.
Ik kan het VB scriptje wel omzetten in C en kijken hoe snel het dan is.

Wat ik wil is het volgende:

Computer 1 genereert de codes (via script) die piped het naar stdin.
De volgende computer doet het kraakwerk.

Het is een test/project om te kijken of het haalbaar is om een (zelfbedacht wachtwoord)
waarvan je enkele gegevens weet (kan raden, opzoeken) middels simpele programma's en huidige computers kan kraken in een redelijke tijd.
Tevens willen we weten wat een oudere (+- 6/7 jaar oud en +-12 jaar oud) computer zou hebben bereikt.

Vandaar dat dit topic ook in programmin stond omdat ik een methode zocht om +- 1 miljoen passwords per seconde te genereren. Toevallig bedacht ik een VB script die het idee zou moeten weergeven.

  • Dirk
  • Registratie: November 2004
  • Laatst online: 13:29

Dirk

Coördinator frontpagemoderatie
Maar waarom zou je die allemaal willen opslaan? Het genereren ervan kost minder tijd dan het uit een bestand lezen. Als je het echt zo lomp mogelijk wil aanpakken dan nest je gewoon een stel for lussen:
code:
1
2
3
4
5
6
for a = 65 to 90
    for b = ...
        for c = ...
            string$ = chr$(a) + chr$(b) + ...
            [doe wat met string$]
next c, b ,a

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.

Pagina: 1