多列中查找连续位置值的技术咨询
问题
我需要提取处于连续位置(范围A001至A122)的产品列表,目前遇到的问题是这些位置值分散在多列(Loc1、Loc2、Loc3)中,恳请指导如何得到高亮绿色的目标表格。感谢帮助。Paul
输入表格
| Product | Loc1 | Qty1 | Loc2 | Qty2 | Loc3 | Qty3 |
|---|---|---|---|---|---|---|
| FALLONES16 | A001 | 19 | ||||
| FALLONES12 | A002 | 36 | ||||
| POL02 | A009B | 42 | A020B | 42 | A035 | 42 |
| OIPLTMBS | A014b | 84 | a053b | 84 | A004 | 17 |
| PIZ9-C | A016B | 42 | A003 | 23 | a081b | 42 |
| PRPIZ9 | A021 | 47 | A063A | 42 | A075A | 42 |
| 10012181 | A023A | 42 | A034A | 42 | A114b | 42 |
| JDMFCH | A024B | 80 | A107A | 42 | A004 | 34 |
| MFCH | A005 | 112 | F045 | 44 |
解决方案
这里以Excel为例,提供两种实用操作方法:
方法一:拆分整理后提取目标表格
- 合并所有位置列:新增一列(比如H列),用公式把Loc1、Loc2、Loc3的内容合并,自动忽略空值。公式如下:
=TEXTJOIN(",",TRUE,B2,D2,F2)
下拉填充到所有行,这样每一行的所有位置信息都集中在这一列。 - 提取位置的数字部分:新增I列,提取位置中的数字(核心判断A001-A122的数字范围001-122),公式示例:
=VALUE(MID(H2,2,LEN(H2)-IF(RIGHT(H2)={"A","B","a","b"},1,0)))
这个公式会去掉开头的"A",再去掉末尾可能带的A/B(大小写都兼容),把剩余部分转成数值。 - 筛选符合条件的行:选中I列,设置筛选条件为
>=1且<=122;同时可以再加个筛选条件,确保位置是以"A"开头的(排除像F045这类非A开头的位置)。 - 高亮并提取:选中筛选后的行,用填充颜色工具设置为绿色,之后可以复制这些行到新表格中。
方法二:直接用条件格式高亮目标行
如果不需要单独提取表格,只想在原表格里高亮符合条件的行:
- 选中整个数据区域(比如A2:G10,假设数据从第2行开始)。
- 打开「条件格式」→「新建规则」→选择「使用公式确定要设置格式的单元格」。
- 输入以下公式:
=OR(AND(LEFT(UPPER(B2),1)="A",VALUE(MID(B2,2,3))>=1,VALUE(MID(B2,2,3))<=122),AND(LEFT(UPPER(D2),1)="A",VALUE(MID(D2,2,3))>=1,VALUE(MID(D2,2,3))<=122),AND(LEFT(UPPER(F2),1)="A",VALUE(MID(F2,2,3))>=1,VALUE(MID(F2,2,3))<=122))
这个公式会检查Loc1、Loc2、Loc3任意一列的位置是否以"A"开头,且数字部分在1-122之间,大小写兼容。 - 设置格式为填充绿色,确认后符合条件的行就会自动高亮。
注意事项
- 位置中的大小写不影响判断,公式里用
UPPER()统一转成大写,避免遗漏小写的a开头的位置。 - 不管位置数字是一位、两位还是三位(比如A12和A012),
VALUE()函数会自动转成统一数值,不影响范围判断。
内容的提问来源于stack exchange,提问作者Paul Stewart
相关产品推荐
相关产品推荐

