大数跨境

scan和reduce

scan和reduce 浅谈出口账务和excel函数
2026-11-10
4
,把 SCAN 的每一步“摊开”看:

```excel
=SCAN(0, B2:B7, LAMBDA(a, x, a + x))
```

假设:

单元格 值
B2 120
B3 85
B4 130
B5 95
B6 140
B7 110

这里:

· 初始值 = 0:累加从 0 开始;
· 数组 = B2:B7:依次处理 120、85、130、95、140、110;
· a = 累加器:上一步算出来的结果;
· x = 当前值:现在正处理的那个数;
· a + x:用上一步结果加当前值,得到新结果。

每一步过程

步骤 当前值 x 上一步累加器 a 计算 a + x SCAN 输出
第1步 120 0 0 + 120 120
第2步 85 120 120 + 85 205
第3步 130 205 205 + 130 335
第4步 95 335 335 + 95 430
第5步 140 430 430 + 140 570
第6步 110 570 570 + 110 680

所以公式结果溢出成一列:

```text
120
205
335
430
570
680
```

也就是:

```excel
=SCAN(0, B2:B7, LAMBDA(a, x, a + x))
```

返回:

```excel
{120; 205; 335; 430; 570; 680}
```

而如果换成 REDUCE:

```excel
=REDUCE(0, B2:B7, LAMBDA(a, x, a + x))
```

它只返回最后一个数:

```text
680
```

这就是两者唯一但关键的区别:

· REDUCE:只报最终答案 680
· SCAN:把每一步的 120、205、335、430、570、680 全留下来

---

再举一个“余额滚动”的例子

假设初始余额是 1000 元,后面是每笔收支:

单元格 收支
D2 -200
D3 -150
D4 +300
D5 -100
D6 -50

公式:

```excel
=SCAN(1000, D2:D6, LAMBDA(a, x, a + x))
```

每一步:

步骤 当前收支 x 上一步余额 a 新余额 a + x 输出
第1步 -200 1000 1000 - 200 800
第2步 -150 800 800 - 150 650
第3步 +300 650 650 + 300 950
第4步 -100 950 950 - 100 850
第5步 -50 850 850 - 50 800

结果:

```text
800
650
950
850
800
```

这就是“余额滚动”:每一行都能看到“到这一笔为止,账户还剩多少”。

---

再举一个“连乘”的例子

初始值 1,数组是 2、3、4:

```excel
=SCAN(1, A2:A4, LAMBDA(a, x, a * x))
```

步骤 x a a * x 输出
第1步 2 1 1 × 2 2
第2步 3 2 2 × 3 6
第3步 4 6 6 × 4 24

返回:

```text
2
6
24
```

---

再举一个“拼名单”的例子

```excel
=SCAN("", A2:A4, LAMBDA(a, x, IF(a = "", x, a & "、" & x)))
```

假设 A2:A4 是:

```text
张三
李四
王五
```

过程:

步骤 x a 计算 输出
第1步 张三 空 a 为空,取 x 张三
第2步 李四 张三 张三 & "、" & 李四 张三、李四
第3步 王五 张三、李四 张三、李四 & "、" & 王五 张三、李四、王五

返回:

```text
张三
张三、李四
张三、李四、王五
```

---

一句话总结

SCAN 的公式结构是:

```excel
=SCAN(初始值, 数组, LAMBDA(累加器a, 当前值x, 用a和x算新值))
```

它会把数组挨个处理,并把每一步的新 a 都输出出来。
所以你给的例子就是:

```excel
=SCAN(0, B2:B7, LAMBDA(a, x, a + x))
```

输出:

```text
120
205
335
430
570
680
```

REDUCE 只给最后的 680;SCAN 把 120、205、335、430、570、680 全摊开给你看。

【声明】内容源于网络
0
0
浅谈出口账务和excel函数
1234
内容 1790
粉丝 0
浅谈出口账务和excel函数 1234
总阅读53.4k
粉丝0
内容1.8k