Doorgaan naar hoofdcontent

Excel: Offset Function With Relative or Mixed Cell Referencing

Normally when you use the OFFSET function to create dynamic names, it will use absolute cell referencing. So, you will get examples like this:

=OFFSET(Sheet2!$A$1;0;0;COUNTA(Sheet2!$A:$A);1)

So, what if we used relative cell referencing instead? The result would depend on the cell our cursor is in when we create our formula and the cell our cursor is in when we are looking at the name again.
  • Fill the range A1:A4 with the figures 12 to 15.
  • Put your cursor in A1 again.
  • Create a name RANGE based on the formula with relative cell referencing:
=OFFSET(Sheet1!A1;0;0;COUNTA(Sheet1!A:A);1)
  • Now put your pointer in B15.
  • Look at the name again:

As you can see, we get a different formula now based on the position of our cursor. So for what purpose could we use relative cell referencing?

On a sheet with the name relativeoffset,I created a table in A1:J18 like this:

Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9
Salesman 1 12 29 46 63 16 17 18 19 23
Salesman 2 13 30 47 64 17 23 45 67
Salesman 3 14 31 48 65 18
Salesman 4 15 32 49 66 19 19 19 56
Salesman 5 16 33 50 67 20 20 34
Salesman 6 17 34 51 68 21 21 45 45
Salesman 7 18 35 52 69 22 22 56
Salesman 8 19 36 53 70
Salesman 9 20 37 54 71 23 23 23 23
Salesman 10 21 38 55 72 24 24
Salesman 11 22 39 56 73 25 25 25
Salesman 12 23 40 57 74 26 26 26 26
Salesman 13 24 41 58 75 27
Salesman 14 25 42 59 76 28 28 28 28
Salesman 15 26 43 60 77 29 29 29
Salesman 16 27 44 61 78 30 30 30 30
Salesman 17 28 45 62

As you can see, not every row is completely filled in. Now I created three names:

With the cursor in B2:

BLOCK =OFFSET(relativeoffset!$B2;0;0;1;COUNTA(relativeoffset!$B2:B2))

SALESMAN =OFFSET(relativeoffset!$A1;0;0;1;1)

WEEK =OFFSET(relativeoffset!$B$1;0;0;1;COUNTA(relativeoffset!$B2:B2))

As you can see, I actually used mixed cell referencing.

Now I created a graph with just one series:

Series name: =relativeoffset!Salesman
Series value: =relativeoffset!Block
Axis label names: =relativeoffset!Week

To get the graph really going (the formula needs recalculating every time I move the cursor) I had to add a bit of VBA to the worksheet relativeoffset:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.Calculate
End Sub

And then the content of the graph moves along with your cursor:


In poistion F10 I get Salesman 9 until Week 5 and so on.

You can also download the file graphexperiment.zip through this link:

https://drive.google.com/folderview?id=0B7HgkOwFZtdZVmhRQUZFM28yc1U&usp=sharing

Reacties

Populaire posts van deze blog

Friesland: nu ruim 1500 Friese familiewapens doorzoekbaar

Inleiding Het totale overzicht is nu ook als PDF te downloaden: rptWapens Al jaren verzamel ik de teksten van grafzerken en andere voorwerpen om ze in een database bijeen te brengen. Op heel veel oude grafzerken, rouwborden of andere voorwerpen in Friesland treffen we naast tekst ook vaak familiewapens aan. Ruim een jaar geleden ben ik gestart met het koppelen van familiewapens aan deze teksten. Met behulp van deze database kunnen we nu steeds meer voorheen onbekende wapens thuisbrengen of andersom, initialen herleiden tot de bijbehorende namen. Een voorbeeld. Zo kennen we uit het boek Fries Zilver nummer 894 met de tekst: TDH RBB 1669 Tjitte D. Wijngaarden geboren 6 october 1874 Daarbij een mannen- en een vrouwenwapen. Mannenwapen blijkt dat van Hoitinga te zijn. De letters blijken vervolgens te herleiden tot Tjepke Douwes Hoitinga en Rienkje Bouwes Bruinsma uit Nijland. Vermoedelijk getrouwd in 1669! Opgelost. Ander voorbeeld. Op een lepel uit het boek Dokk...

Excel: VBA script om wachtwoord te verwijderen

Af en toe krijg ik een vraag om een wachtwoord van een Excel blad te halen. Doodsimpel met VBA. Hier een script dat ik gebruik: Sub WachtwoordCrack()     Dim a As Integer, b As Integer, c As Integer, d As Integer, _     e As Integer, f As Integer, g As Integer, h As Integer, _  I As Integer, j As Integer, k, m As Integer     Dim begin As Date, eind As Date     Dim duur As String     Dim objSheet As Worksheet     begin = TimeValue(Time)     On Error Resume Next     For Each objSheet In Application.Worksheets         For a = 65 To 66: For b = 65 To 66: For c = 65 To 66             For d = 65 To 66: For e = 65 To 66: For f = 65 To 66                 For g = 65 To 66: For h = 65 To 66: For I = 65 To 66                     For j = 65 To 66: For k = 65 To...

Excel: Creating Your Own Tabs With XML And VBA

In order to create you own nice looking tabs you need the Custom UI Editor for Microsoft Office. You can download it for free. How is this different from choosing File , Options , Customize Ribbon and adding a new tab with new groups and then commands to the group? You can also move the new tab to any position. T hen your new tab is always there. Even when you don't open the specific file with the right VBA. In my example the outcome looks like this, a nice tab, placed in front of the Home Tab. You will only get this tab when you start the specific example (which you can download). The XML behind this: <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">    <ribbon startFromScratch="false">     <tabs>       <tab id="MaxIlze" label="Dossier Overzicht" insertBeforeMso="TabHome">         <group id="customGroup1" label="Adressen verrijken">         ...