13
\$\begingroup\$

I have a spreadsheet that tracks the XP for our group and I've gotten tired of manually looking up how much xp is needed for the next level.

I'd much prefer if there was a formula I could put on the spreadsheet that would calculate the level given the XP? (Without using a lookup table)

\$\endgroup\$
0

5 Answers 5

8
\$\begingroup\$

We'll start with this post:

"After 2nd level, the amount of experience you need to gain a level goes up by 250 points (i.e., you need +1,000 to reach level 2, +1,250 to reach level 3, etc.). After four levels of this, the 'additional' amount increases to 500. About the point you'd expect this to continue, it gets extremely erratic on levels 11 (+1,500) and 12 (+500), then reverts back to +1,000 at 13th and 14th. Levels 15-18 add +2,000 each, and 19-20 start at +4,000 -- this implies the amount added doubles every four levels.

Except that level 21 adds +8,000, and 22 adds +3,000. After that little bit of weirdness, it does +10,000 for four levels, and +25,000 for the last four."

Here's a rough chart of the results; the first column is from the RAW, the second removes the 'jagged' parts, and the third assumes a simple doubling every time. The numbers on the latter two look funny, but the progression itself is easier to predict.

 RAW    Smooth   Doubler
 1          0         0         0
 2      1,000     1,000     1,000
 3      2,250     2,250     2,250
 4      3,750     3,750     3,750
 5      5,500     5,500     5,500
 6      7,500     7,500     7,500
 7     10,000    10,000    10,000
 8     13,000    13,000    13,000
 9     16,500    16,500    16,500
10     20,500    20,500    20,500
11     26,000    25,500    25,500 <- 500 XP difference
12     32,000    31,500    31,500
13     39,000    38,500    38,500
14     47,000    46,500    46,500
15     57,000    56,500    56,500
16     69,000    68,500    68,500
17     83,000    82,500    82,500
18     99,000    98,500    98,500
19    119,000   118,500   118,500
20    143,000   142,500   142,500
21    175,000   170,500   170,500 <- 4,500 XP difference
22    210,000   202,500   202,500 <- 7,500 XP difference
23    255,000   244,500   242,500 <- 10,500/12,500
24    310,000   296,500   290,500 <- 13,500/19,500
25    375,000   358,500   346,500 <- 16,500/28,500
26    450,000   430,500   410,500 <- 19,500/39,500
27    550,000   527,500   490,500 <- 22,500/59,500
28    675,000   649,500   586,500 <- 25,500/88,500
29    825,000   796,500   698,500 <- 28,500/126,500
30  1,000,000   968,500   826,500 <- 31,500/176,500

There are no clean mathematical formulas to approximate this, according to the curve-fitting service ZunZun.com. While my prior equation did serve to ... output the rates of increase, a lookup table or your own XP chart should serve better.

Curiously, this does highlight some interesting questions about the relative time per level, suggesting that a custom XP chart may provide a more consistent levelling experience for your players.


Edit. Here's a quick and dirty reverse lookup that worked in excel 2008. =VLOOKUP(A1,{0,1;1000,2;2250,3;3750,4;5500,5;6500,6;10000,7;13000,8;16500,9;20500,10;26000,11;32000,12;39000,13;47000,14;57000,15;69000,16;83000,17;99000,18;119000,19;143000,20;175000,21;210000,22;225000,23;310000,24;375000,25;450000,26;550000,27;675000,28;825000,29;1000000,30},2)

\$\endgroup\$
8
\$\begingroup\$

While the progression isn't readily codified, here's the lookup formula (replace the reference to A1 with the cell with character level) so you don't have to look in the book:

 =CHOOSE(MAX(MIN(31,A1),1),0, 1000, 2250, 3750, 5500, 7500, 10000, 13000, 16500, 20500, 26000, 32000, 39000, 47000, 57000, 69000, 83000, 99000, 119000, 143000, 175000, 210000, 255000, 310000, 375000, 450000, 550000, 675000, 825000, 1000000, "—")

Why the MAX() function? So that it doesn't choke on a blank field.
Why the MIN() function? The maximum entry from the table is level 29, so if the character is 30 or above, it uses the 30th entry.
The choose function looks at the first entry for a numerical index value of 1-N, and the rest of the entry is a list N long of results.

\$\endgroup\$
5
  • \$\begingroup\$ I get an error when I paste that into A2 with A1=1. Deleting the last "--" term clears the error, but the function fails for A1=30. \$\endgroup\$
    – Adam Dray
    Nov 12, 2010 at 5:04
  • \$\begingroup\$ fixed, now it performs bounds checking correctly. \$\endgroup\$ Nov 12, 2010 at 5:32
  • \$\begingroup\$ I checked my formula in Apple's Numbers; I don't do microsoft. Any errors are differences in implementation of the function. \$\endgroup\$
    – aramis
    Nov 12, 2010 at 10:20
  • 2
    \$\begingroup\$ Doesn't this formula do the exact opposite of what Pat Ludwig wants? This returns the XP based on level, not level based on XP. \$\endgroup\$
    – Stewbob
    Nov 12, 2010 at 22:41
  • \$\begingroup\$ Ah, yes... but having it in would allow him to know when they've leveled up, and then just update the level. The vlookup or hlookup functions can do the other direction, but have the disadvantage of being more difficult to use. \$\endgroup\$
    – aramis
    Nov 13, 2010 at 5:09
7
\$\begingroup\$

I use a table and the VLOOKUP function in Excel for this kind of thing. You can input all the values for the levels in a table similar to what Brian has shown. Put this on another (or hidden) page and then use the lookup functions so the level is automatically updated when the value of the XP cell changes.

When using the VLOOKUP function, the first column needs to be the min XP required for that level, and the 2nd column is the level.

=VLOOKUP("cell address/name containing XP","address/name of table",2,TRUE) The '2' indicates that you will return the value from the 2nd column in the table. The 'TRUE' indicates that an exact match is not required on the XP value.

\$\endgroup\$
0
0
\$\begingroup\$

I'm sure there are better ways to do this... it works for me. AW9 being the XP cell.

=ifs(AW9>=355000,20,AW9>=305000,19,AW9>=265000,18,AW9>=225000,17,AW9>=195000,16,AW9>=165000,15,AW9>=140000,14,AW9>=120000,13,AW9>=100000,12,AW9>=85000,11,AW9>=64000,10,AW9>=48000,9,AW9>=34000,8,AW9>=23000,7,AW9>=14000,6,AW9>=6500,5,AW9>=2700,4,AW9>=900,3,AW9>=300,2,AW9<299,1)
\$\endgroup\$
1
  • \$\begingroup\$ Hi David, welcome to RPG.SE! Take the tour to find out how things work here, and visit the help center for more guidance. I put the formula in code markdown notation, not sure if it's actually an improvement or not though... feel free to edit it back to how it was if you don't like it. \$\endgroup\$
    – NathanS
    Dec 20, 2019 at 14:56
-2
\$\begingroup\$

EDIT Apparently they totally changed stuff for 4e, my answer is only for 3e.


This is a common misconception that there is no formula, in fact someone once told me there was a proof that there is no possible formula! But, in direct contradiction to that, I present to you the following formulas I just derived (you can check it easily in Excel):

If the level is n

XP to get to the next level: (n^2+n)*1/2*1000

XP to attain that level (as is how it is written in the DnD books): (n^2-n)*1/2*1000

\$\endgroup\$
1
  • 4
    \$\begingroup\$ Hi there. You should have a "delete" option next to the edit button. You can use that to remove the answer, as it doesn't apply to 4e. Welcome to the site. :) \$\endgroup\$
    – Tridus
    Oct 28, 2013 at 18:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .