【问题标题】:Trying to create 2 columns out of 1 column of data using offset and indirect尝试使用偏移和间接从 1 列数据中创建 2 列
【发布时间】:2019-09-26 14:13:42
【问题描述】:

需要取 1 列数据并创建 2 列,以最大限度地提高每张表上的数据量。

我一直在使用偏移和间接公式,但没有得到预期的结果。以下只是我尝试和使用并尝试改变以获得我认为我应该得到的东西的几个例子。

=IF(OFFSET(Sheet1!$A$1,(COLUMN()-1)*10+ROW()-1,0)="","",OFFSET(Sheet1!$A$1,(COLUMN()-1)*310+ROW()-1,0))

=OFFSET($A$1,ROW()*1-2+COLUMN(),0)&""

=INDIRECT("a"&ROW()*1-(2-COLUMN()))

所以我们需要用尽可能少的打印页面创建一个尽可能动态的 excel 模板。因为行数是未知的,所以我们希望以允许我们接收和需要打印的尽可能少或尽可能多的数据的方式构建模板。因此,我们需要在每页中放置 2 个列集,每个集包含 10 行,因此我们每页总共可以有 20 个集。

在找到偏移和间接后,我开始使用它,看看我是否可以创建一个公式来满足我们的需求..

我们试图通过使用这些公式(如果它们是正确的)来看到以下内容:

假设我们的数据表中有 25 行。我们希望在我们的模板上看到以下内容。

Page 1

1     11

2     12

3     13

4     14

5     15

6     16

7     17

8     18

9     19

10    20


Page 2

21

22

23

24

25

【问题讨论】:

    标签: excel formula offset excel-indirect


    【解决方案1】:

    如果可能,不要使用 INDIRECT 和 OFFSET(而且我只发现很少需要它们),因为它们是易失性函数。索引是最好的选择:

    第1页把这个放在第一个单元格中,复制一个到十个:

    =INDEX(Sheet1!$A:$A,Row(1:1)+((column(A:A)-1)*10))
    

    在每个连续工作表中添加 20 的因数:

    =INDEX(Sheet1!$A:$A,Row(1:1)+((column(A:A)-1)*10)+(20*1))
    

    将第三个*1 更改为*2,依此类推。

    【讨论】:

    • 这个方法可以改成动态的吗?意思是我知道我们每页最多只需要 20 行,如果我们没有足够的空间来填充一页,它可能会更少,但是如果我们说 135 行,我们是否必须自己计算并为每 20 行计算公式?
    • 是的,它需要手动,因为公式无法判断它被放置在哪个数字表上。为此,您需要 vba。
    • 所以我喜欢你的例子,它的简单形式,效果很好。我如何修改公式以将我当前的公式合并到我的电子表格中?这是我在 A1 单元格 =UPPER(Data!O2) 中的内容,我会将其放入公式 =INDEX(Sheet1!$A:$A,ROW(1:1)+((COLUMN(A:A)- 1)*10)) 代替“Sheet1!$A:$A”
    • 不,你会将整个公式包装在 UPPER(...) 中
    • 所以我将工作表中第 1 列的公式修改为 =INDEX(Data!$A2,ROW($1:$1)+((COLUMN(A:A)-1)*10) ) 这适用于第一组 10 个,但是当我尝试使用延续公式复制第 2 列中的公式时,它会给出 #REF 错误
    猜你喜欢
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 2021-04-07
    • 2021-05-13
    • 2017-12-04
    • 2020-03-01
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多