Кажется, вам требуется максимальное число заполненных строк из любого столбца, упомянутого в качестве основных критериев в вашей формуле (ей).
Кроме того, если lr равно 99, то "F2:I2" & lr
становится F2:I299
.
Одноразовые вары редко бывают целесообразными или эффективными, если они не улучшают четкость кода. arr не сделал ничего из этого, но я бы сказал, что ty оправдано последним.
Sub test1()
Dim lr As Long, ty AS VARIANT
with workSheets("Detail")
lr = application.max(.cells(.rows.count, "H").end(xlup).row, _
.cells(.rows.count, "P").end(xlup).row, _
.cells(.rows.count, "AR").end(xlup).row, _
.cells(.rows.count, "BR").end(xlup).row)
.Range("F:I").NumberFormat = "General"
.Range("F1:I1").Value = Array("MFR", "CUSTLINE#", "PRICE (DYP)", "DELIVERY")
ty = Array("=IF(H2=""NB"", text(,), AY2)", "=A2", "=IF(P2= text(,), ""NB"", P2)", _
"=IF(BR2>(D2+AM2), ""STOCK"", " & _
"IF(AR2=""0 Weeks"", text(,), SUBSTITUTE(AR2, "" Weeks"", "" WKS"")))")
.Range("F2:I" & lr).Formula = ty
end with
End Sub
Если вам не нравится использовать allCast[1]
, вы можете просто сделать cast.cast
и избавиться от allCast
:
this.movieService.getCast(id).subscribe(cast => {
this.cast = cast;
console.log(cast);
this.cast = cast.cast.map(el => el.name).slice(0, 4);
console.log(this.cast);
});
});
На самом деле, если вам нужны только первые 4 names
, вы можете сначала slice
массив, а затем map
над массивом 4 длины (это улучшит производительность, так как вы не будете отображать весь оригинал массив). Кроме того, свойство cast
может быть принято directclty без необходимости Object.values()
. Итак, ваш код может быть уменьшен до этого:
this.movieService.getCast(id).subscribe(cast =>
{
console.log(cast);
this.cast = cast.cast.slice(0, 4).map(el => el.name);
console.log(this.cast);
});