【问题标题】:Random string from a set of available strings in Excel but exclude specific Cell ValueExcel 中一组可用字符串中的随机字符串,但不包括特定的单元格值
【发布时间】:2016-07-27 08:55:22
【问题描述】:

我正在使用 Excel 2010。我正在使用 INDEX 和 RANDBETWEEN 函数来查找可用字符串的列表并返回其中一个。但是,我有一个特定的值 D3(在这种情况下,但会随每一行 D4、D5 等而变化),我需要从随机结果中排除 - 实现这一目标的最佳方法是什么?这是我目前的公式:

=IFERROR(INDEX($A:$D,MATCH($B3&"|"&LEFT($C3,SEARCH("-",$C3))&L3,$A:$A,0)+RANDBETWEEN(0,S3-1),4),"")

谢谢

【问题讨论】:

    标签: excel excel-formula excel-2010


    【解决方案1】:

    请删除那些与您的问题无关的代码部分,并将所有内容简化为您实际需要解决的问题。 IFERROR()、MATCH()、LEFT() 和 SEARCH() 调用与您的问题无关,但会使您的代码难以理解。 为了简化,我假设:

    • 范围 D1:D199 被(可能重复的)字符串填充
    • E1:E199 列中的每个单元格都应该从整个 D1:D199 中抽取一个随机字符串,除了那些与其左侧单元格相同的字符串(在 D 中)

    将以下代码复制并粘贴到 E1 中,然后使用 Ctrl+Shift+Enter 将其作为数组公式输入。

    =INDEX(D:D,LARGE(IF((D1:D200<>"")*(D1:D200<>D1),ROW(D1:D200),-1),RANDBETWEEN(1,SUM((D1:D200<>"")*(D1:D200<>D1)))))
    

    然后您可以将单元格 E1 复制到 E2:E199

    根据 Dirk Reichel 的建议更新了代码。

    【讨论】:

    • 如果我输入 F2:=COUNTIF($E$1:E1,E2) 并复制下来,它告诉我有双打...
    • 要获得第一次出现数字的确切行,只需在 E2 中 =IF(COUNTIF($E$1:E27,E28),MATCH(E28,E:E,0),"") 并向下复制即可。
    • @DirkReichel - 据我了解,作者不介意 E 列中的重复项,但他希望避免 D 和 E 中水平相邻的单元格获得相同的值
    • 你是“完全”正确的......这样我的回答也是“完全”错误的:P
    • 另外,如果处理空字符串,那么{=INDEX(D:D,LARGE(IF((D1:D200&lt;&gt;"")*(D1:D200&lt;&gt;D1),ROW(D1:D200)),RANDBETWEEN(1,SUM(IF((D1:D200&lt;&gt;"")*(D1:D200&lt;&gt;D1),1)))))} 也会排除它们;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    相关资源
    最近更新 更多