Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中使用的拆分大数组公式_Vba_Excel - Fatal编程技术网

在VBA中使用的拆分大数组公式

在VBA中使用的拆分大数组公式,vba,excel,Vba,Excel,我试图将月份划分为每周的日期,如果一周中的任何特定开始日期与假期匹配,则应移至下一个工作日。突出显示的列中给出了最终更正日期 (无法发布图像或excel工作表,因为它不允许我成为新手) 在一些帮助下,我已经找到了执行此操作的数组公式,但由于255个字符的限制,该公式非常长,无法在VBA中使用 =IF(ISNUMBER(MATCH(C2,$M$2:$M$14,0)),MIN(IF((MMULT(-- (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$

我试图将月份划分为每周的日期,如果一周中的任何特定开始日期与假期匹配,则应移至下一个工作日。突出显示的列中给出了最终更正日期

(无法发布图像或excel工作表,因为它不允许我成为新手)

在一些帮助下,我已经找到了执行此操作的数组公式,但由于255个字符的限制,该公式非常长,无法在VBA中使用

=IF(ISNUMBER(MATCH(C2,$M$2:$M$14,0)),MIN(IF((MMULT(--
  (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))
  =TRANSPOSE($M$2:$M$14)),ROW($M$2:$M$14)^0)=0)*
  (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31))))>C2,
  (MMULT(--
  (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))
  =TRANSPOSE($M$2:$M$14)),ROW($M$2:$M$14)^0)=0)*
  (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))))),C2) 
我需要将其分解成更小的版本或部分,以便在VBA中使用它。 非常感谢您的帮助。
谢谢

为了避免255个字符的字符串限制,您可以声明变量并将其连接为:

Dim strFormula As String

strFormula = "IF(ISNUMBER(MATCH(C2,$M$2:$M$14,0)),MIN(IF((MMULT(--
    (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))
    =TRANSPOSE($M$2:$M$14)),ROW($M$2:$M$14)^0)=0)*
    (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31))))>C2,"

strFormula = strFormula & "(MMULT(--
    (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))
    =TRANSPOSE($M$2:$M$14)),ROW($M$2:$M$14)^0)=0)*
    (ROW(INDEX($A:$A,DATE(YEAR(C2),1,1)):INDEX($A:$A,DATE(YEAR(C2),12,31)))))),C2)"

你能澄清一下你所指的255限额是多少吗?你在用那个字符串做什么?我试着用它,但它给了我一些括号(需要结束语句)错误。我试着把所有的括号都匹配起来,我觉得没问题。