Google 工作表,列中的随机文本单元格,但未在最后 7 个选择中使用

Google Sheets, random text cell from column, but not used in last 7 selections

我有一个 Google sheet,我从 BBC RSS 提要中获取天气信息。 (天气标签)。然后我从标题中提取当前的简要天气概要,例如 'Sunny'。

我想在标记为 'Sunny' 的列中有 10 条左右的消息(Select 标签)(还有雨、多云等),其中一个随机单元格是 selected根据今天的天气,然后发送到'Todays Message'sheet 所以我需要说的基本上。如果 Weather!A5 = :Sunny,则 select 来自 !Select A:A 的随机消息(但不是最近 7 次使用过的消息)并将副本粘贴到 !Todays_Message A5。

我希望这能说得通吗?

这是 sheet 并且已打开以供编辑: Google Sheet Test

提前致谢

我已经为你做了sample test file

为了简化公式,我将所有数据粘贴在一个sheet:

  • A1:D1 -- 可能的天气列表 (:Sunny, :Mostly Cloudy, :Cloudy, :Rain)
  • A2:D11 -- 消息列表
  • F2:F8 -- 最后7个选择
  • H2 -- 当前天气

第一个任务是找到可能的消息列表,它们必须包含对当前天气的评论,但不包含最后 7 条消息。

粘贴在单元格 H8 中的公式为:

=FILTER(OFFSET(A1,1,MATCH(H2,A1:D1,0)-1,10),
REGEXMATCH(OFFSET(A1,1,MATCH(H2,A1:D1,0)-1,10),join("|",F2:F8))=false)

这是可能消息的列表

H4 中的公式:

=INDEX(H8:H,RANDBETWEEN(1,COUNTA(H8:H)))

它将从可能的消息列表中选择随机项目


更新

我添加了 sheet "All Messages" 并且它们的列表在范围 "A2:A" 中。查找 最后 7 条消息 的公式是:

=QUERY({ArrayFormula(row(OFFSET('All Messages'!A2,,,counta('All Messages'!A2:A)))),
OFFSET('All Messages'!A2,,,counta('All Messages'!A2:A))},
"select Col2 order by Col1 desc limit 7 ")

放在F2单元格是示例文件。