Menu

用EXCEL制作血统表吧!

Level 1 先尝试制作3代血统表
-使用VLOOKUP函数制作血统表-

【制作表格框架】

首先,请在EXCEL中通过“新建”准备一个新的工作簿。
在空白的工作表中,按照以下方式绘制表格边框。

【创建数据库】

接下来,创建数据库部分。
在E1到G16的单元格范围内输入以下数据。
如果需要直接复制屏幕上的内容,请选择表格范围,然后复制并粘贴到EXCEL的E1单元格位置。
表格的格式应该会保持不变并粘贴成功。

马名
Blushing Groom Red God Runaway Bride
Colorspin High Top Reprocolor
Fairy Bridge Bold Reason Special
High Top Derring-Do Camenae
Key to the Kingdom Bold Ruler Key Bridge
Northern Dancer Nearctic Natalma
Noura Key to the Kingdom River Guide
Red God Nasrullah Spring Run
Reprocolor Jimmy Reppin Blue Queen
River Guide Drone Blue Canoe
Runaway Bride Wild Risk Aimee
Sadler's Wells Northern Dancer Fairy Bridge
Opera House Sadler's Wells Colorspin
T M Opera O Opera House Once Wed
Once Wed Blushing Groom Noura

【在单元格中输入公式以显示父马】

当空的表格和数据库准备好后,在A1单元格中输入“T M Opera O”。
这是输入你想要制作血统表的马名的单元格。


接下来,在A4单元格中输入=VLOOKUP(A1,E2:G16,2,0)
这是显示血统表中“父马”的单元格。
单元格的值是不是显示为“Opera House”了呢?

【VLOOKUP函数】

VLOOKUP函数是一个在指定范围内通过左端列的值进行搜索,并提取符合条件的单元格值的函数。
=VLOOKUP(A1, E2:G16, 2, 0)当中

  1. A1 是作为搜索键的值。这里以A1单元格中输入的值作为键,在指定范围内的左端列进行搜索。
  2. E2:G16 是搜索值的单元格范围。
  3. 2 是指示从指定范围的左端列开始,提取第2列的值。这里指示提取“父马”的名字。
  4. 0 是指定当键值在范围的左端列中不存在时的处理方式。
    • 指定“0”或“FALSE”时,如果键值不存在,则返回错误。
    • 指定“1”或“TRUE”时,或省略时,返回小于键值的最大值。
在血统表中使用VLOOKUP函数时,最后一个参数(上例中的“0”)必须设置为“0”或“FALSE”。

试着将A1单元格的值改为“Stay Gold”,并将A4单元格的公式改为:
=VLOOKUP(A1,E2:G16,2,1)
单元格的值会如何变化?

实际上,“Stay Gold”并未在数据库中注册。本应显示错误,但A4单元格的值却显示为“Sadler's Wells”。这是因为未找到键值,因此搜索了小于该值的最大值,即“Opera House”,并显示了其父马“Sadler's Wells”。为了避免自动生成错误的血统表,请务必在最后一个参数中使用“0”或“FALSE”。

将A4单元格的公式改回:
=VLOOKUP(A1,E2:G16,2,0)
这次会显示“#N/A”,表示未找到对应的值。

【在单元格中输入公式以显示母马】

将A1单元格的值改回“T M Opera O”,然后在A8单元格中输入:
=VLOOKUP(A1,E2:G16,3,0)
这个公式与A4单元格的公式几乎相同,只是第三个参数从“2”改为“3”。
这次我们希望显示“母马”,因此在数据库中指定了包含“母马”名字的第3列。
A8单元格的值是不是显示为“Once Wed”了呢?

【在单元格中输入公式以显示父马的父马】

血统表的基本原理是:找到某匹马的父马和母马并显示,然后进一步找到父马的父马和母马并显示,母马的父马和母马并显示,依此类推。
那么,如何在B3单元格中显示“Opera House”的父马呢?
这次的键值是A4单元格中的值。只需输入以下公式即可:
=VLOOKUP(A4,E2:G16,2,0)

【为范围命名】

每次输入“E2:G16”来指定搜索范围很麻烦。可以为固定范围命名(范围名),并使用该名称。

  1. 选择E2到G16的范围。
  2. 从菜单中选择 插入→名称→定义,为选定的范围命名为“HD”。
    (或点击菜单栏左下角的“名称框”,输入“HD”)
编者注:这种方法可能已经被淘汰了

“HD”是“HORSE DATA”的缩写。
范围名可以是“HorseData”、“马血统”或任何你喜欢的名称,但建议使用简短且易于理解的名称。

命名后,将B3单元格公式中的“E2:G16”改为“HD”(或你命名的名称),并确认搜索是否正确。
注意:输入范围名时,不要添加“"”(双引号)等符号。

“Opera House”的父马“Sadler's Wells”是否正确显示了呢?
同样地,将A4和A8单元格的公式中的范围名也进行修改。

【在单元格中输入公式以显示母马】

将A1单元格的值改回“T M Opera O”,然后在A8单元格中输入:
=VLOOKUP(A1,E2:G16,3,0)
这个公式与A4单元格的公式几乎相同,只是第三个参数从“2”改为“3”。
这次我们希望显示“母马”,因此在数据库中指定了包含“母马”名字的第3列。
A8单元格的值是不是显示为“Once Wed”了呢?

【完成血统表】

接下来,请在B5单元格中显示“Opera House”的母亲,在B7单元格中显示“Once Wed”的父亲,在B9单元格中显示“Once Wed”的母亲。
如果做到这一步,剩下的就是重复同样的操作。在C3到C10单元格中也输入VLOOKUP函数的公式,完成3代血统表。
按照下表输入后,应该能正确显示血统表。

A B C
1 (在这里输入马名)
2
3 =VLOOKUP(A4,HD,2,0) =VLOOKUP(B3,HD,2,0)
4 =VLOOKUP(A1,HD,2,0) =VLOOKUP(B3,HD,3,0)
5 =VLOOKUP(A4,HD,3,0) =VLOOKUP(B5,HD,2,0)
6 =VLOOKUP(B5,HD,3,0)
7 =VLOOKUP(A8,HD,2,0) =VLOOKUP(B7,HD,2,0)
8 =VLOOKUP(A1,HD,3,0) =VLOOKUP(B7,HD,3,0)
9 =VLOOKUP(A8,HD,3,0) =VLOOKUP(B9,HD,2,0)
10 =VLOOKUP(B9,HD,3,0)

表格完成后,将显示“T M Opera O”的血统表。

A B C
1 T M Opera O
2
3 Opera House Sadler's Wells Northern Dancer
4 Fairy Bridge
5 Colorspin High Top
6 Reprocolor
7 Once Wed Blushing Groom Red God
8 Runaway Bride
9 Noura Key to the Kingdom
10 River Guide

【使用血统表】

让我们确认一下这个血统表是否也能正确显示“T M Opera O”以外的马匹。
在A1单元格中输入“Opera House”。血统表会如何变化?

如果显示如下血统表,那就大功告成了。
只要数据库中注册了马匹的数据,就可以显示任何马的血统表。

A B C
1 Opera House
2
3 Sadler's Wells Northern Dancer Nearctic
4 Natalma
5 Fairy Bridge Bold Reason
6 Special
7 Colorspin High Top Derring-Do
8 Camenae
9 Reprocolor Jimmy Reppin
10 Blue Queen

【挑战Level 2!】

在A1单元格中输入“Colorspin”试试。

A B C
1 Colorspin
2
3 High Top Derring-Do #N/A
4 #N/A
5 Camenae #N/A
6 #N/A
7 Reprocolor Jimmy Reppin #N/A
8 #N/A
9 Blue Queen #N/A
10 #N/A

虽然前2代显示正确,但第3代的列显示为“#N/A”。
这是因为第2代的马(如Derring-Do和Camenae)的数据未注册,因此无法显示搜索值。

由于数据不存在,这是无法避免的,但比起表中显示错误,什么都不显示会更美观。

Level 2中,我们将介绍如何使用IF函数避免显示此类错误。
此外,在Level 3中,我们不仅会显示马的名字,还会显示性别、毛色、出生年份等信息,制作更专业的血统表。

Level 1中制作的血统表在Level 2中也会用到,请为文件命名并保存。