You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel查找矩阵内数字位置遇TEXTJOIN报错及替代方案咨询

Excel 2019中TEXTJOIN报错问题分析与替代方案

问题原因:不是列数限制,而是TEXTJOIN的字符数上限

Excel 2019中TEXTJOIN()函数拼接后的字符串最大长度为32767个字符,当拼接结果超出这个限制时就会返回#VALUE!错误。

你测试的8×1118矩阵,元素是1-8与1-1118的乘积(最大为8944,占4位字符),总字符数累加后超过了32767;而100×90矩阵的元素乘积最大为9000(同样4位),但总字符数刚好未触及上限,所以能正常执行。

替代方案

方案1:直接定位元素(推荐,无需拼接字符串)

跳过TEXTJOIN(),直接在矩阵中查找包含"7"的元素位置,避免字符数限制。使用数组公式(Excel 2019需按Ctrl+Shift+Enter确认输入):

=INDEX(ROW(1:8), MIN(IF(ISNUMBER(FIND("7", MMULT(ROW(1:8), TRANSPOSE(ROW(1:1118))))), ROW(1:8))))&", "&INDEX(COLUMN(1:1118), MIN(IF(ISNUMBER(FIND("7", MMULT(ROW(1:8), TRANSPOSE(ROW(1:1118))))), COLUMN(1:1118))))

用LET()函数简化(Excel 2019支持),可读性更强:

=LET(
    mat, MMULT(ROW(A1:A8), TRANSPOSE(ROW(A1:A1118))),
    has_seven, ISNUMBER(FIND("7", mat)),
    row_num, MIN(IF(has_seven, ROW(mat))),
    col_num, MIN(IF(INDEX(has_seven, row_num, ), COLUMN(mat))),
    "行: "&row_num&", 列: "&col_num
)

方案2:分块拼接查找

将矩阵拆分为多个小块,分别用TEXTJOIN()拼接后依次查找,找到后计算对应位置。示例(拆分前500列和剩余列):

=LET(
    mat, MMULT(ROW(A1:A8), TRANSPOSE(ROW(A1:A1118))),
    first_chunk, INDEX(mat,,1:500),
    first_match, MATCH(TRUE, ISNUMBER(FIND("7", first_chunk)), 0),
    IF(ISNUMBER(first_match),
        "行: "&INT((first_match-1)/500)+1&", 列: "&MOD(first_match-1,500)+1,
        second_chunk, INDEX(mat,,501:1118),
        second_match, MATCH(TRUE, ISNUMBER(FIND("7", second_chunk)), 0),
        "行: "&INT((second_match-1)/618)+1&", 列: "&500+MOD(second_match-1,618)+1
    )
)

方案3:VBA自定义函数

编写简单的VBA代码遍历矩阵,直接返回第一个包含"7"的元素位置:

  1. 按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码:
Function FindSevenInMatrix(rngRows As Range, rngCols As Range) As String
    Dim rowArr As Variant, colArr As Variant
    Dim i As Long, j As Long
    Dim val As String
    
    rowArr = rngRows.Value
    colArr = rngCols.Value
    
    For i = LBound(rowArr) To UBound(rowArr)
        For j = LBound(colArr) To UBound(colArr)
            val = CStr(rowArr(i, 1) * colArr(j, 1))
            If InStr(val, "7") > 0 Then
                FindSevenInMatrix = "行: " & i & ", 列: " & j
                Exit Function
            End If
        Next j
    Next i
    
    FindSevenInMatrix = "未找到"
End Function
  1. 返回Excel,在单元格中输入=FindSevenInMatrix(A1:A8, A1:A1118)即可获取结果。

内容的提问来源于stack exchange,提问作者Rasec Malkic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:57:47