How to Create a Position Cheat Sheet in Excel

I’m going to try something a bit different here.

Instead of analysis, let’s try an instructional piece about how to add a feature to your draft prep spreadsheet. In the instructions that follow, I’ll show you how to make a cheat sheet based on auction values. When you’re done, you’ll have something like this…

CHEAT_SHEET

Be Sure to Let Me Know…

Making your own spreadsheet is a bit niche. Discussing lengthy Excel formulas, a bit more niche. So there’s a chance this won’t be well received. But I know you folks are out there and I have a feeling those making their own fantasy spreadsheets are likely to be hanging out here at Rotographs. I’m hoping there’s an interest in this topic. So be sure to let me know if this hits the mark and if it’s something I should consider for future posts.

NOTE: I will be using Microsoft Excel 2013 to demonstrate this process. I believe all the formulas will also work in previous versions of Excel, Google Sheets, and other free Excel alternatives, but there may be subtle differences. I also assume you have some familiarity with spreadsheets and this is not your first rodeo.

The instructions below start with a download from the Auction Calculator, but you could start with dollar values of any sort. You’ll just need to use some creativity to adjust the formulas according to the setup of your own spreadsheet.

You Aren't a FanGraphs Member
It looks like you aren't yet a FanGraphs Member (or aren't logged in). We aren't mad, just disappointed.
We get it. You want to read this article. But before we let you get back to it, we'd like to point out a few of the good reasons why you should become a Member.
1. Ad Free viewing! We won't bug you with this ad, or any other.
2. Unlimited articles! Non-Members only get to read 10 free articles a month. Members never get cut off.
3. Dark mode and Classic mode!
4. Custom player page dashboards! Choose the player cards you want, in the order you want them.
5. One-click data exports! Export our projections and leaderboards for your personal projects.
6. Remove the photos on the home page! (Honestly, this doesn't sound so great to us, but some people wanted it, and we like to give our Members what they want.)
7. Even more Steamer projections! We have handedness, percentile, and context neutral projections available for Members only.
8. Get FanGraphs Walk-Off, a customized year end review! Find out exactly how you used FanGraphs this year, and how that compares to other Members. Don't be a victim of FOMO.
9. A weekly mailbag column, exclusively for Members.
10. Help support FanGraphs and our entire staff! Our Members provide us with critical resources to improve the site and deliver new features!
We hope you'll consider a Membership today, for yourself or as a gift! And we realize this has been an awfully long sales pitch, so we've also removed all the other ads in this article. We didn't want to overdo it.

 Step-by-Step Instructions
1. Visit the Auction Calculator and download a set of dollar values specific to your league’s settings. When you’ve completed the setup, click the “Export Data” link and a “Fangraphs Leaderboard.csv” will download to your computer.

AUCTION_CALC
2. Locate and open the “Fangraphs Leaderboard.csv” file in Excel (or your spreadsheet application of choice). Depending on your computer’s settings, you may need to right-click on the file and choose to “Open with>Excel”.OPEN_WITH

After opening the file, perform a “Save As” and save the file to an Excel file format (e.g. “.xlsx”).

Finally, rename the worksheet. Right-click on the lone worksheet tab and choose the “Rename” option. Give it a name like “Rankings”.

RANKINGS
3. For the sake of simplicity, I’m going to delete some of the information from the spreadsheet that I won’t be using (the PA, mAVG, mR, mSB, mHR, PTS, and aPOS columns).

DELETED_COLUMNS

Not that these aren’t helpful, but I’ve got limited real estate to work with on this web page. You can definitely keep these columns in your file.

4. The next issue we have to address is the fact that some players have multi-position eligibility. Take Buster Posey for example. You can see from the image above that he’s eligible at C and 1B.

This doesn’t work well with cheat sheets and it could be argued that drafting a player and putting him anywhere besides his most valuable position (“MVP”) is an inefficient use of resources (dollar values are calculated assuming a player’s MVP is used).

To determine each player’s MVP, start a new column. In cell E1 (or your first empty column), type “MVP”.

MOST_VAL_POS
5. Copy the formula below and then paste it into cell E2 (or the second cell in the new column you just started). The formula assumes that cell C2 contains the position for the first player listed.

=IFERROR(IF(FIND("C",C2,1)>0,"C"), IFERROR(IF(FIND("SS",C2,1)>0,"SS"), IFERROR(IF(FIND("2B",C2,1)>0,"2B"), IFERROR(IF(FIND("3B",C2,1)>0,"3B"), IFERROR(IF(FIND("OF",C2,1)>0,"OF"), IFERROR(IF(FIND("1B",C2,1)>0,"1B"),"DH"))))))

What is this doing? The formula first searches the text in the POS column (using the FIND function) for “C”. If it doesn’t find “C”, it proceeds through the remaining positions in order of decreasing scarcity.

I generally assume the order of scarcity to be C, SS, 2B, 3B, OF, and 1B. If you disagree, just swap the positions in the formula into your order of preference.

The “IFERROR” functions are needed because if the “FIND” function is not able to locate “C”, the result of the formula would be an error. These layered “IFERROR” functions are essentially saying, “look for ‘C’, but if you get an error, then look for ‘SS’, and if you get an error there, then look for ‘2B’, etc.”.

6.  After adding the formula to cell E2, copy the formula to the remaining cells in that column.

The easiest way to do this is to click once again on E2 in order to select it. Then double-click on the small square that will appear in the lower right-hand corner of the cell.

COPY_FORMULA
7. Next we need to determine positional rank. I’d ultimately like to see “OF-1” for Mike Trout, so we need a formula to determine that he is in fact the first ranked outfielder.

Start another column. For me, that’s column F. Type “Rank”.

RANK
8.  Enter the following formula in cell F2:

=COUNTIF(E$2:E2,E2)

Then repeat the same process of double-clicking on the box in the corner of cell F2 to copy that formula to the remaining cells in the column. When you’re done, it should look something like this:

POS_RANK_NUM

This column is a “positional ranking”. Trout is the first outfielder. Harper the second. Goldschmidt the first 1B. Altuve the first 2B. Then Betts is the third outfielder. You get the idea.

In the example file I’m working with, here’s what that COUNTIF formula turned in to for Giancarlo Stanton:

=COUNTIF(E$2:E9,E9)

That “$” in the formula is using an “absolute” cell reference, meaning as the formula is copied to nearby cells, that part of the formula does not change. The “$” being in front of the “2” means it will stay locked on the second row.

The rest of the formula is missing the “$” so those cell references are adjusting as the formula is copied. For Stanton, this COUNTIF formula is counting any item between cells E2 and E9 that meets a specific condition… That condition is “E9”. Meaning, “count any player between E2 and E9 that is also an OF”.

9. Next, we’ll combine the player’s MVP and positional ranking to make a better looking ranking. Going back to Stanton, I’d like his rank to display as “OF-4” in one place.

To start this process type “POS RANK” in cell G1.

POS_RANK_COL

Then enter this formula in cell G2:

=E2&"-"&F2

This should result in “OF-1” for Mike Trout. Using the ampersand is a shortcut to using Excel’s CONCATENATE function, which allows you to attach strings of text together. It’s a heck of a lot easier than typing that long word…

This formula is appending the POS (“OF”), a dash (“-“), and the Rank (“1”) for Trout.

Complete this step by copying the “POS RANK” formula to the other cells in that column.

POS_RANK_COL_DONE
10. That completes the work on the “Rankings” sheet. Start a new worksheet and name this “Cheat Sheet”.

CHEAT_SHEET_TAB
11. Fill out the new “Cheat Sheet” tab as shown below.

LAYOUT

12.  Enter the following formula in cell B2:

=MATCH(B$1&"-"&$A2,Rankings!$G:$G,0)

NOTE: This assumes you labelled your first sheet, “Rankings”.

There are many “$” in there and they’re all important. We’ll eventually be copying this formula to the rest of this “Cheat Sheet” tab and need to be careful about the cell references and how they’ll change when that happens.

This formula results in “8” in my example spreadsheet.

MATCH

The MATCH function will look in a designated row or column and tell you which item in that row or column represents the match.

This particular formula is looking in column G of our “Rankings” sheet for the string “C-1″ (that’s what the B$1&”-“&$A2 evaulates to (remember the ampersand can string text together).

The final element of the MATCH formula is the zero, which means I’ve instructed Excel to find exact matches only. I only want “C-1”. If it were to find “C-11”, I don’t want that to be considered a potential match.

Looking at my Rankings sheet, Posey is C-1 and is the eighth item in column G. The formula appears to be working.

POSEY
13.  Now add a little more to the formula in cell B2. The pieces to add are in brown text and the pieces you’ve previously added are shaded gray):

=INDEX(Rankings!$A:$G,MATCH(B$1&"-"&$A2,Rankings!$G:$G,0),1)

What we’re doing is using the combination of the INDEX and MATCH functions to find player names. This INDEX and MATCH strategy is similar to using VLOOKUP, but it’s even more powerful and flexible.

INDEX wants three inputs:

  • The area to look in (a set of rows and columns, usually). This is the “Rankings!$A:$G” piece (look in columns A through G on the “Rankings” tab).
  • The row number in that area that you want to pull from. This is where we use MATCH. We already used MATCH to determine Buster Posey (or “C-1” was on row 8).
  • The column number you want to pull from. In this case we want the “PlayerName”, which is in column 1.
14. We now just need to add one more component to that formula. It’s working for C-1. But we eventually will need to build this out to accomodate “OF-60”. And the Auction Calculator isn’t going to spit out “1B-60” or “DH-60”.

To prevent errors, we’ll use IFERROR again:

=IFERROR(INDEX(Rankings!$A:$G, MATCH(B$1&"-"&$A2,Rankings!$G:$G,0),1),"")

This can be interpreted as, “If there’s an error with the INDEX/MATCH formula, just show blank text”. That’s the “”.

Now drag that formula down to fill out the rest of the “C” column. Then drag it to the right to populate the remaining positions.

FORMULA_DRAG
15.  Voila!

FINAL
16.  If you want to make it look pretty, click the “Format as Table” button on Excel’s Home tab and choose a color pattern.

FORMAT_AS_TABLE

Excel offers many beautiful colors… but not “Rotographs Brown”. I had to make my own.

ROTOGRAPHS_BROWN

I only set this up to show the top 20 at each position, but the beauty of the formulas used is that you can easily expand this by dragging the formulas down as far as you want. The only limitation is the number of players exported from the Auction Calculator.

Wrapping Up, Want More?

Was this helpful? Interesting? I’d love to hear your reaction in the comments. Would you like to see more posts like this in the future?

Hopefully your feedback will be positive and I’ll be back with more. But in the meantime, if you’re looking for more information on building a draft or rankings spreadsheet, here are some other instructions I’ve written previously:





Tanner writes for Fangraphs as well as his own site, Smart Fantasy Baseball . He's the co-auther of The Process with Jeff Zimmerman, and has written two e-books, Using SGP to Rank and Value Fantasy Baseball Players and How to Rank and Value Players for Points Leagues, and worked with Mike Podhorzer developing a spreadsheet to accompany Projecting X 2.0. Much of his writings focus on instructional "how to" topics, Excel, and strategy. Follow him on Twitter @smartfantasybb.

73 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
RCMember since 2016
10 years ago

Very well done. Nothing here is particularly complicated, but I hadn’t considered putting my sheets together in quite this way before. Thanks for the article.

bziman
10 years ago

Great article, I’ve been creating my own cheat sheets for a two years now and this made it a lot easier with the formula’s. I would be very interested in more articles like this on how to make cheat sheets or using excel to organize stats and data for draft day.

whiptydojoe
10 years ago

I can’t even verbalize my enthusiasm for this post. Admittedly, I am an Excel nerd and my fellow drafters in baseball (and football) give me the strangest looks with the color coding, lists, and multiple tabs I use during my draft. This is just another tool I will be looking to add to my toolkit.

One question: How would this be changed based on personal feelings/research on positions? Are players easily changed from one order to the next?

wisckitz
10 years ago

This is excellent. Really well done and such a useful tool. Thanks!

Ken ErdedyMember since 2016
10 years ago

Love. Like emoji-with-hearts-for-eyes love.

mborsk33
10 years ago

Tanner, great stuff! Been using your Smartfantasy Excel docs for the past two years and they help out a ton. Check out his website and grab his e-book it has tons of tips and tricks in it!

Sellys
10 years ago

Huh, that concatenate function would have come in handy a couple days ago. Oh well, better late than never.

scotman144Member since 2016
10 years ago
Reply to  Sellys

you can also avoid typing “concatenate” by just sticking cell references together with & such as = A1&B1 you can even delimit your concatenated text in this manner: = A1&”_”&B1

alang3131982Member since 2016
10 years ago

This will save me hours. Thank you kindly sir.

Mat
10 years ago

More!!!

MattMember since 2016
10 years ago

definitely helpful even for regular Excel users. I would be interested in more of this. Thank you. especially in a build your own draft tool. where it shows you half way through the draft hey you need a little more SB etc.

TheEmbassy
10 years ago

More like this, yes, please.

thermosMember since 2016
10 years ago

Great! Super helpful – thanks for this!

deb81162
10 years ago

Tanner, I have a spreadsheet setup dealing with an auction draft. You will need to put in your salary cap. But then it automatically calculate how much money was spent on your team, how much money you have left to spend and what is your maximum price you can spend on a given player. It also shows how much was spent on offensive players and how much was spent on pitchers. I keep every draft to see trends year in and year out. If you have interest in getting it from me and me discussing the ins and outs on how to setup or change things, I am up for going back and forth in E-Mails. Let me know

Hack Wilson
10 years ago

Question for you. I have a column for which team a player was drafted by with a dropdown list. Is there a way to copy a player to a team page based on the condition in this drafted column?

Justin CMember since 2020
10 years ago
Reply to  Hack Wilson

Same way he does the position rank above. Just concat team on there and index>match to that identifier.

Chris WalkerMember since 2025
10 years ago

“Double click on this bad boy”

nate0605
10 years ago

Semi-related question, would it be possible to add categories to the auction calculator? Specifically Losses and BB issued for pitchers? I realize these may not be super common categories and there’s probably a lot that goes into the calculations.

chadkay
10 years ago

Love this spreadsheet. I use a similar one at my drafts. One additional thing I’ve done is organize by $ value tiers ($40 –> $30 –> $20 tiers, etc.) instead of rank alone. This makes it easier to see the large drop in value from #1 to #3 in catcher vs. the smaller drop-off from the #1 to #3 in 1B… it also makes a great reference for other drops in value between tiers that you may not be aware of just by looking at rankings alone.

barry
10 years ago
Reply to  chadkay

was trying to do the same but couldnt find way to execute it.. do you mind showing how you altered formula for that?

Pinstripe Wizard
10 years ago

Is there a way to get the auction values for pitchers straightened out? For example, our league uses IP as a category. However, the auction value calculator will not assign a weighted value for IP, so the 500 it projects has about 300 people projected for less than 30 IP. It leaves off so many SP that look to get several starts this year. For example, Sonny Gray doesn’t make the list, but Eric Jokisch does.

Justin CMember since 2020
10 years ago

Mookie Betts above Giancarlo and McCutchen? I like Mookie too, but come on.

Cory Settoon
10 years ago

* Immediately favorites page for future use*

Thanks Tanner. This feeds into my love a S/S and baseball perfectly!

sakiehl
10 years ago

Please do more of these!

I'm Your Huckleberry
10 years ago

Tanner-

On your site I learned how to use excel items like tables and VLOOKUPS.

I’m now the designated Excel expert for a rather large charity. I’m not sure whether to thank you or be mad at you for getting me stuck doing this. I’ll go with the former.

Shane21
10 years ago

Hey tanner,

the one issue I’m having is that when i paste the positional rankings in step 8, I have multiple players listed at number 1. For example Mookie, Harper, and Trout, are all listed as the #1 OF for me. Any way to fix this?

Shane21
10 years ago
Reply to  Tanner Bell

Ah, there’s the problem. Thanks!

RoyMember since 2016
10 years ago

This was really helpful. Is there a formula to add for MI or CI?

abalascoMember since 2025
10 years ago

Excellent article; I would love to see more like this. I modified my Cheat Sheet to show the auction value with the player name (just used concatenate again).

(37.3) Buster Posey

barry
10 years ago
Reply to  abalasco

Mind explaining how you added auction value? cant figure it out.. thanks

CodyB
10 years ago

This is great! I learned a couple new tricks

Go Rockies
10 years ago

Bit by bit, Fangraphs is destroying the competitive advantage gained by those of us who built solid spreadsheets, auction calculators, etc. on our own while our competition floundered away with magazines printed before the first day of spring training. That’s a compliment, but one I don’t like making.

Paul621Member since 2020
10 years ago

Thank you, this is awesome! I’d definitely be in favor of more like this.

cujoespo
10 years ago

Anyone know how to do this in Google Sheets? Once I get to step 12 the formulas need to change, but I’m not great with it :-/

cujoespo
10 years ago
Reply to  cujoespo

Never mind, I’m an idiot.

VottomanEmpireMember since 2025
10 years ago

SUPER helpful, thank you! Instituted all of the above steps. Opened the tabs for your 3 previous sheets re: assigning drafted players to their teams, shading them out and calculating running standings, but I’m a bit concerned about my ability to implement the 3rd.

Specifically, if I download the Fangraphs Auction Calculator as the basis for all this, then the projections I get for each statistical arrive in a format that is $-based, not counting-stats based. What can I do about that? Thanks again.

haddilacMember since 2026
10 years ago

Gold

metzwinston
10 years ago

REALLY liked this post. I love Fangraphs, but feel there is an opportunity for improvement in regards to having more posts like Tanner’s in the future. Yes, that sentence wasn’t the most bestly [sic] constructed, but it’s Friday night?

I’m in for getting a group together to share Excel ideas, and… I think Excel-based posts like Tanner’s could/should be a semi-monthly Fangraphs feature? Right?

… a lot of potential here…

mlucey
10 years ago

Great Article. These are great tips and such perfect timing. The last step in my spreadsheet was the positional ranking. I had been doing that by hand in the past.
Keep these excel tips coming.

Sam Choung
10 years ago

This is information worth buying… which I’ve already done as I’ve purchased the bundle package! Thanks for all you do!

ChristianRiLo
10 years ago

Aw man, this was super fun to execute. It didn’t take long at all! I did some tinkering to add SP and RP too. Fun stuff. Thank you.

vjturotte
10 years ago

This was good fun, thanks Tanner. I’ve got two very basic questions, however:
1. I’ve put together a separate sheet for my pitchers, using all the same steps up to Position Rank column. I want to merge that into the Cheat Sheet, but cannot get the values to show by cutting and pasting the formula from the rest of the sheet, even if I change the source from “Rankings” to “Pitching” (name of my pitcher ranking sheet).

2. I want to do a separate sheet that just ranks the players overall by dollar value, including both pitchers and position players, but I’m having a lot of trouble when I merge the data. I think this is a “paste special” issue, and will try that, but do you have any other ideas?

Thanks again, this was a blast, and I’m going to use it for both my league drafts this year.

Vince

ChristianRiLo
10 years ago
Reply to  vjturotte

Vince,
I’ll let you know how I did it when I’m in front of my computer. It was simpler than I thought and I’m an intermediate Excel user. I’ll share later tonight!

pdamore
10 years ago

Great stuff Tanner. As a total excel nerd this is pure gold! Keep it coming.

My question for you/FG community is around the MVP methodology of player valuation. It is something I subscribe to fully. Using Posey as an example I only use his CA eligibility in my valuation because by drafting him at 1B you lose the positional value and overall max value of Posey. I use z score in my valuation and calculate my own dollar values. My question to the crowd is do people still rank Posey at 1B along with catcher but only use his CA value for overall rankings? I currently do not, but note the multi positional eligibility. My reasoning is that by using the most valuable position (which I have similarly ranked to tanner), you are maximizing player values for ranking purposes.

William WallaceMember since 2017
10 years ago

Keep these coming. Great way to learn Excel, and lots of fun, too!

stepheng
10 years ago

Hi Tanner,

Is there anyway to get conditional formatting from a “rankings” sheet used to populate the cheat sheet to automatically update on the “cheat sheet” sheet itself?
I’d like to track players drafted on the rankings page but have the conditional formatting that tells me they are drafted update the cheat sheet as well. (hope this makes sense).
Thanks for all the excel info.

steve

stepheng
10 years ago
Reply to  Tanner Bell

Hi Tanner,

This worked well. The INDEX/MATCH pulled the team name but also returned a “0” for players not yet drafted/assigned a team. I couldn’t figure out why, so I just changed the conditional formatting to format any value >0 and it worked. Figured I’d share in case anyone else had similar issues.
Thanks again!
steve

stepheng
10 years ago

Great! Thanks Tanner. Really looking forward to putting the spreadsheets to use this year!

HighCheese
10 years ago

Great stuff,

My 2B column isn’t filling out on the “cheat sheet” tab, but everything else is working fine. Any suggestions or something I missed? Thanks!

TopChuckie
10 years ago

Tanner,

Been reading FG for a long time, never left a comment before, so I guess “long time listener, first time caller”. This article moved me to register and comment because I definitely would like to see more of this sort of article.

I have been using Excel for years for draft prep and have become fairly proficient, first simply to create printable cheat sheets to now using it as a draft tracking program. In the past couple years I have streamlined it enough to actually use during the draft without fear of a hiccup that will throw a wrench into my whole draft, but I am always looking to expand and improve and learn new tricks. There are plenty of Excel related websites out there, but I love seeing how others are using it specifically for baseball related purposes.

Keep it up, the more the merrier. Off to read some of the links you posted.

Thanks!