Google Spreadsheet,上面的行单元格与arrayformula在同一列中的操作

时间:2017-04-20 08:35:21

标签: google-sheets

我在列的第一行有 public static class GeneralPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_general); setHasOptionsMenu(true); // Bind the summaries of EditText/List/Dialog/Ringtone preferences // to their values. When their values change, their summaries are // updated to reflect the new value, per the Android Design // guidelines. bindPreferenceSummaryToValue(findPreference("your_key")); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { getActivity().onBackPressed(); } return super.onOptionsItemSelected(item); } } ,因此我的值和计算可以从第2行开始,也可以从列长度开始。

我遇到这种情况:

https://docs.google.com/spreadsheets/d/11oDra7Vja4-5C0Uix7JTgLLSMG3gPj-6fkajXlWqqQk/edit?usp=sharing

Test

我需要一个简单的算术运算:

为每一行减去同一列的上述值。

我正在使用:

arrayformula

但是你看错了。

怎么做?

更新的问题:

然后在第二张表格中,我需要一个SUM操作,列中包含一些空白单元格:

Test2

怎么做?

https://docs.google.com/spreadsheets/d/11oDra7Vja4-5C0Uix7JTgLLSMG3gPj-6fkajXlWqqQk/edit#gid=931743679

2 个答案:

答案 0 :(得分:1)

如果你想让数组公式离开标题,这有点奇怪,因为你需要允许公式在技术上访问第0行,我们可以通过构造范围来实现。

=ArrayFormula(IF(
  --(ROW(A1:A) > 2) + -ISBLANK(A1:A) = 1; 
  {0; A1:A} - {0; A2:A; 0}; 
  ""))

--(ROW(A1:A) > 2) + -ISBLANK(A1:A) = 1检查行是否已填充,而不是以与数组公式配合良好的方式排在前两行之一

{0; A1:A} - {0; A2:A; 0}执行以下操作:

0   Data   156    123   110    95    42
-   -     -      -     -     -     -
0   156    123    110    95    42     0
=   =     =      =     =     =     =  
0    33     13     15    53    42    42
N     N      Y      Y     Y     Y     N <- Is shown  
^     ^                               ^
|     |                               Because Row is blank
|     |
Because row not > 2, thus it is never evalauated even though the second would cause an error

答案 1 :(得分:1)

我觉得这很棘手。问题是在数组公式中,每个数组中的单元格数必须匹配 - 如果它们一直到电子表格的底部,则不能将从第1行开始的数组与从第2行开始的数组混合。 / p>

这是获得所需结果的一种方法

=arrayformula({"What I need";"";offset($A$1,1,0,count(A:A)-1)-offset($A$1,2,0,count(A:A)-1)})

enter image description here

你需要改变;而且,对于您的语言环境。

我使用{}表示法构建了一个数组来定义元素。在我的地方a;意味着转到下一行,所以我将前两个单元格直接定义为字符串。之后我选择使用偏移来获得范围A2:A5(从A1向下1行,0行和4个单元格高)并减去范围A3:A6(从A1向下2行,向下0行和4行)细胞高)它给我另外4个细胞。

B1 "What I need"
B2 ""
B3 A3-A2=33
B4 A4-A3=13
B5 A5-A4=15
B6 A6-A5=53

但如果数字之间有任何空白单元格,则需要添加IF语句。

在您更新的问题的特定情况下,D列中的数字少于C列,公式将为

=arrayformula({"Special Case";"";offset($D$1,1,0,count(D:D))+offset($C$1,2,0,count(D:D))})

但是在一般情况下,任何地方都有空白单元格,你必须测试一切

=arrayformula({"General Case";"";if(offset($D$1,1,0,rows(C:C)-2)="","",if(offset($C$1,2,0,Rows(C:C)-2)="","",offset($D$1,1,0,rows(C:C)-2)+offset($C$1,2,0,Rows(C:C)-2)))})