Google sheets GoogleSheets:调整数组公式以自动显示在每一行中

Google sheets GoogleSheets:调整数组公式以自动显示在每一行中,google-sheets,google-sheets-formula,array-formulas,Google Sheets,Google Sheets Formula,Array Formulas,所讨论的公式是:=IF(ISBLANK(H2),”,ARRAY_constraint(ARRAYFORMULA)(IF((MOD(SUM)(INT)(MID(REPT)(“0”,20-LEN(H2))&H2,ROW($1:$31),1)*(MOD(ROW($1:$31),2)+1)/10)+MOD MID(REPT($0,20-LEN(H2)和H2,ROW($1:$31),2)+10)=0),”✔", "❌")), 1,1)) 在英语中,它检查H2是否包含有效的信用卡(通过Luhn算法、讨论/示

所讨论的公式是:
=IF(ISBLANK(H2),”,ARRAY_constraint(ARRAYFORMULA)(IF((MOD(SUM)(INT)(MID(REPT)(“0”,20-LEN(H2))&H2,ROW($1:$31),1)*(MOD(ROW($1:$31),2)+1)/10)+MOD MID(REPT($0,20-LEN(H2)和H2,ROW($1:$31),2)+10)=0),”✔", "❌")), 1,1))

在英语中,它检查H2是否包含有效的信用卡(通过Luhn算法、讨论/示例数据)。预期输出有效=✔; 无效=❌; 如果为空,则为空

我试图将其调整为显示在每一行中,但似乎无法确定(使用公式
=LEFT(H2,4)&“&MID(H2,5,6)
,如果
=arrayformula(LEFT(H2:H100,4)&“&MID(H2:H100,5,6))
插入新行时,它将显示在每一行中,而不必手动重新填充)

.

试试这个:

=ARRAYFORMULA(
  IF(
    H2:H = "",
      "",
      IF(
        MOD(
          MMULT(
              MID(REPT("0", 20 - LEN(H2:H)) & H2:H, SEQUENCE(1, 10, 2, 2), 1)
            + MID(REPT("0", 20 - LEN(H2:H)) & H2:H, SEQUENCE(1, 10, 1, 2), 1) * 2
            - (MID(REPT("0", 20 - LEN(H2:H)) & H2:H, SEQUENCE(1, 10, 1, 2), 1) * 2 > 9) * 9,
            SEQUENCE(10, 1, 1, 0)
          ),
          10
        ) = 0,
          "✔",
          "❌"
      )
  )
)


如果您想要一个更通用的解决方案(对于长度超过20位的卡号),请将20替换为
MAX(LEN(H2:H))+MOD(MAX(LEN(H2:H)),2
,10替换为
(MAX(LEN(H2:H))+MOD(MAX(LEN(H2:H))/2
,如果您可以提供一个带有少量数据的样本表,这将使处理此问题更加容易。添加了