我试图让我的代码根据我的数据集中有多少数据点将公式插入到数组中。下面的代码几乎可以工作,但是在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>");
答案 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时,不需要循环。