[Excel] Excel snapt niet wat ik wil...

Pagina: 1
Acties:

  • Opperhoof
  • Registratie: Mei 2003
  • Laatst online: 22:05
Ik weet niet hoe het heet wat ik wil maar het is vrij simpel en iedereen doet het.
voorbeeld, je maakt in A een getallen reeks. Dus A1=1 A2=2 A3=3 etc.
Dan kun je die cellen selecteren en met het zwarte vierkantje naar beneden trekken zodat excel zelf a4=4 en a5=5 maakt etc..

Dit wil ik nu ook doen maar iets moeilijker. Ik heb de getallen rij in A al gemaakt, tot 1000
nu wil ik in B het volgende maken:
b1=1
b2=500
b3=2
b4=501
b5=3
b6=502
etc.

Dit krijg ik alleen niet voor elkaar. En nu wil ik graag weten hoe ik het wel krijg of hoe ik het Excel wijs kan maken het zo te doen...?!

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Vul in cell B1 de volgende formule in:
code:
1
=(A1/2)+IF(ISEVEN(A1);499;0,5)

En gebruik auto-fill (dat zwarte kruisje dat je noemt) om de formule naar beneden toe door te voren.

En als je het zonder rij A wilt doen gebruik je de volgende formule:
code:
1
=(ROW()/2)+IF(ISEVEN(ROW());499;0,5)

[ Voor 27% gewijzigd door Stamgastje op 30-12-2006 14:50 ]


  • Opperhoof
  • Registratie: Mei 2003
  • Laatst online: 22:05
Wat je zeg is inderdaad goed, maar niet voor mij. Ik had gehoopt op een algemene oplossing want mijn probleem ligt nog net een beetje anders.
Ik wil namelijk de informatie die in A staat in een andere volgorde in B krijgen.
In mijn voorbeeld was a een lineare opsomming maar in werkelijkheid niet :)
Ik wil dus
de data van A1 --> B1
de data van A500-->B2
de data van A2 --> B3
de date van A501--> B4

en dat is per cel verschillend zonder dat er een vaste structuur in zit.

  • feelthepower
  • Registratie: April 2003
  • Laatst online: 25-07 15:50
Selecteer van beide kolommen de inhoud. (niet de kolom zelf, de inhoud!)
ga naar "Data"
sorteren.
sorteren op kolom b.
Oplopend.


Opgelost?

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Opperhoof schreef op zaterdag 30 december 2006 @ 15:58:
Ik wil dus
de data van A1 --> B1
de data van A500-->B2
de data van A2 --> B3
de date van A501--> B4

en dat is per cel verschillend zonder dat er een vaste structuur in zit.
Dan doe je het volgende:

In kolom A staat de data

In Kolom B deze formule:
code:
1
=(ROW()/2)+IF(ISEVEN(ROW());499;0,5)

In kolom C deze formule:
code:
1
=OFFSET($A$1;B1-1;0)


Kolom B is een hulpkolom die de rij-index in kolom A weergeeft waarvan je de data wilt hebben. En kolom C bevat deze data.

Eventueel zou je kolommen B en C ook kunnen samenvoegen door in kolom B de volgende formule te gebruiken:
code:
1
=OFFSET($A$1;(ROW()/2)+IF(ISEVEN(ROW());498;-0,5);0)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Opperhoof schreef op zaterdag 30 december 2006 @ 15:58:
[...]
en dat is per cel verschillend zonder dat er een vaste structuur in zit.
verbaast me niks dat Excel er niks van snapt dan?

Zoals je het beschrijft zit er wel een structuur in: de even rijen moeten verwijzen naar A500:A1000 en de oneven rijen naar A1:A499?

Dan maak je met index in combinatie met wat gegoochel met rij() (zie stamgastje) wat je nodig hebt.

[edit[ of idd met verschuiving (offset):
code:
1
=VERSCHUIVING($A$1;(GEHEEL(RIJ()/2)+(IS.EVEN(RIJ())*499));0)

[ Voor 11% gewijzigd door Lustucru op 30-12-2006 17:01 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Opperhoof
  • Registratie: Mei 2003
  • Laatst online: 22:05
Ja zo kan het inderdaad ook ja! :)

Ik kreeg een andere heldere ingeving, gewoon even een scriptje schrijven dat mijn wens netjes als uitvoer geeft.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dim getal2

getal2 = 500

genereer

sub genereer

for i = 1 to 501
wscript.echo "=A" & i
getal2 = getal2 + 1
wscript.echo "=A" & getal2
next

end sub


en dan krijg je als uitvoer
code:
1
2
3
4
5
6
7
8
9
10
11
=A1
=A501
=A2
=A502
=A3
=A503
=A4
=A504
=A5
=A505
=A6


Dit kopieer je naar excel en die geeft netjes wat ik wil :)

Anyway thanx voor de hulp!

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Een betere oplossing zou dan nog zijn om het in VBScript in Excel te doen:
VBScript:
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
Sub CreateInterleavedList()

    Const sheetname = "Sheet1"
    Const src_col = "A"
    Const src_row1 = 1
    Const src_row2 = 500
    Const dst_col = "B"
    Const dst_row = 1
    
    Dim ws As Worksheet
    Dim sr, dr, sr_offset As Integer
    
    Set ws = Worksheets(sheetname)
    sr_offset = src_row2 - src_row1
    dr = dst_row
    For sr = src_row1 To (src_row2 - 1)
        ws.Cells(2 * dr - 1, dst_col).Value = ws.Cells(sr, src_col).Value
        ' of met formule i.p.v. waarde:
        ' ws.Cells(2 * dr - 1, dst_col).Formula = "=" & src_col & sr
        ws.Cells(2 * dr, dst_col).Value = ws.Cells(sr_offset + sr, src_col).Value
        ' of met formule i.p.v. waarde:
        ' ws.Cells(2 * dr, dst_col).Formula = "=" & src_col & (sr_offset + sr)
        dr = dr + 1
    Next
    
End Sub

Nu kun je direct de data manipuleren.
Pagina: 1