最近头有点疼,医生建议监测两个周的血压情况,复诊时提供。
感觉随便记录下,容易丢,也不方便统计,于是就用 Excel 记录。另外我还根据《中国高血压防治指南(2023年修订版)》的标准,记录了血压等级。
但每次判断等级挺麻烦,既然用了 Excel,能不能用公式搞定呢?
想了一下,感觉不太好写,需要判断范围,同时还需要考虑收缩和舒张压。
直接问元宝,很快有了结果:
=CHOOSE(MAX(LOOKUP(B2,{0,120,140,160,180},{1,2,3,4,5}),LOOKUP(C2,{0,80,90,100,110},{1,2,3,4,5})),"正常血压","正常高值","1级高血压","2级高血压","3级高血压")我的表格是这样的:
将公式添加到等级中,效果不错。
但这个公式是什么意思呢?
主要使用了三个方法:CHOOSE、MAX、LOOKUP
LOOKUP 有三个参数,第一个为输入值,第二个为范围数组,第三个为结果数组。范围数组将数轴分成 n 段,每个段对应于结果数组的一个值,如下图所示:
大于等于0,小于120 对应于 1大于等于120,小于140 对应于 2……
对收缩和舒张压,公式相同,只是各自范围不同,从而就能得到各自的结果。
LOOKUP(B2,{0,120,140,160,180},{1,2,3,4,5}) #收缩压等级LOOKUP(C2,{0,80,90,100,110},{1,2,3,4,5})) #舒张压等级根据《中国高血压防治指南(2023年修订版)》的标准,收缩和舒张压看哪个高,就看哪个的等级,所以对于两个结果用 MAX 取最大值。
MAX(收缩压等级, 舒张压等级)最终将值通过 CHOOSE 方法来得到对应的等级描述。
CHOOSE 和 LOOKUP 类似,不过只能通过从1开始的索引来得到结果数组中对应索引的值。
CHOOSE(血压等级,"正常血压","正常高值","1级高血压","2级高血压","3级高血压")这样就能根据输入的实际血压值,自动计算出血压等级,方便而精确。
解决方法不止一个,还可以通过嵌套的 IF 公式来解决,不过会稍显麻烦:
=IF(AND(B2<120, C2<80), "正常血压", IF(OR(AND(B2>=120, B2<=139), AND(C2>=80, C2<=89)), "正常高值", IF(AND(B2>=140, C2<90), "单纯收缩期高血压", IF(OR(B2>=180, C2>=110), "3级高血压", IF(OR(AND(B2>=160, B2<=179), AND(C2>=100, C2<=109)), "2级高血压", IF(OR(AND(B2>=140, B2<=159), AND(C2>=90, C2<=99)), "1级高血压", "数据异常"))))))但更符合常规思维方式,有兴趣可以试试。