基于变量和偏移函数将公式插入到数组中

时间:2016-05-19 18:56:13

标签: excel vba excel-vba

我试图让我的代码根据我的数据集中有多少数据点将公式插入到数组中。下面的代码几乎可以工作,但是在X的第一次迭代完成后,它不会将公式插入到列中的所有行中。

Object.prototype.getNestedValue = function(...a) {
  return a.length > 1 ? (this[a[0]] !== void 0 && this[a[0]].getNestedValue(...a.slice(1))) : this[a[0]];
};
Object.prototype.setNestedValue = function(...a) {
  a.length > 2 ? typeof this[a[0]] === "object" && this[a[0]] !== null ? this[a[0]].setNestedValue(...a.slice(1))
                                                                       : (this[a[0]] = typeof a[1] === "string" ? {} : new Array(a[1]),
                                                                                 this[a[0]].setNestedValue(...a.slice(1)))
                      : this[a[0]] = a[1];
  return this;
};


var strings = [
  'COMPANY: NAME  ID: 12 SOMETHING: 1010 MORE: 857',
  'COMPANY: NAME  ID: 12 SOMETHING: 1010 MORE: 857',
  'COMPANY: NAME  ID: 12 SOMETHING: 1010 MORE: 857',
  'COMPANY: NAME2 ID: 10 SOMETHING: 1010 MORE: 333'
],

reduced = strings.reduce((p,c) => {var props = c.match(/(?::\s*)[^\s]+/g).map(e => e.split(":")[1].trim()),
                                       value = p.getNestedValue(...props);
                                   !!value ? p.setNestedValue(...props,++value) : p.setNestedValue(...props,1);
                                   return p},{});

document.write("<pre>" + JSON.stringify(reduced,null,2) + "</pre>");

1 个答案:

答案 0 :(得分:3)

更改为:

With Worksheets(" Branded")
    .Range(.Cells(3, 3), .Cells(Row_Limit1 + 2, Column_Limit1 + 2)).FormulaR1C1 = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
    .Range(.Cells(Row_Limit1 + 3, 3), .Cells(Row_Limit1 + 3, Column_Limit1 + 2)).FormulaR1C1 = "=SUM(R3C:R[-1]C)"
End With

使用R1C1时,不需要循环。