gpt4 book ai didi

excel - 如何确定连续值组?

转载 作者:行者123 更新时间:2023-12-04 21:18:49 25 4
gpt4 key购买 nike

我在 A 列中有一些数据,如下所示

ColA
Z
A

Z
A

Z
A
A
B
B
B

Z
B
B

Z
C
C
C
D
D
我想在 B 列打印
  • "0"如果 A 中的单元格 = "Z"
  • 当 A 中的单元格为空时为空
  • 例如,当一个组以字母 A 开头时,所有接下来的 A 都应标记为 1。
  • 当下一组开始时,即用字母 B,然后用 2 标记所有后面的 B,
  • 当开始一个新组时,即用字母 C,再次用值 1 标记,依此类推。
  • A 列中的值不是按字母顺序排列的字母。只是一个例子。我只知道“Z”的值,组可以有任何字符串

  • 也就是说,为每个新组交替分配值 1 和 2。我希望有意义。
    这是我当前的代码
    Sub t1()
    Dim dict As Object

    Set dict = CreateObject("Scripting.Dictionary")

    For i = 1 To 24
    If Cells(i, "A") = "Z" Then
    Cells(i, "B") = "0"
    ElseIf Cells(i, "A") <> "Z" And Cells(i, "A") <> "" Then
    counter = counter + 1
    dict.Add Key:=Cells(i, "A"), Item:=1

    If Not dict.Exists(Cells(i, "A")) Then
    If counter Mod 2 = 1 Then
    Cells(i, "B") = "1"
    Else
    Cells(i, "B") = "2"
    End If
    End If
    End If
    Next
    End Sub
    我在 B 列中的当前输出和我在列单元格中的预期输出
    ColA ColB    ColC
    Z 0 0
    A 1 1

    Z 0 0
    A 2 1

    Z 0 0
    A 1 1
    A 2 1
    B 1 2
    B 2 2
    B 1 2

    Z 0 0
    B 2 2
    B 1 2

    Z 0 0
    C 2 1
    C 1 1
    C 2 1
    D 1 2
    D 2 2
    也许有人可以帮助我。谢谢

    最佳答案

    Hello, no. Imagine Z and empty values don't exist. Then we have this input A,A,A,B,C,C,C,C,D,D,A,E,E,E,B,A. I only want the alternation between 1 and 2 for each new group. Doesn't matter if A has appeared before, should be taken as new group. With this input the, output should be 1,1,1,2,1,1,1,1,2,2,1,2,2,2,1,2 – Ger Cas 9 hours ago


    试试这个疯狂的公式(我相信这可以变得更简单)。将其放入单元格 B2如下图所示 =IF(ISBLANK(A2),"",IF(A2="Z",0,IF(A2=A1,B1,IF(OR(A1="Z",ISBLANK(A1)),IF(ISERROR(INDEX($A$1:$A1,AGGREGATE(14,6,ROW($1:1)/($A$1:$A1=A2),1))),IFERROR((A1+1),1),IF(OR(INDEX($A$1:$A1,AGGREGATE(14,6,ROW($1:1)/($A$1:$A1=A2),1)+1)="Z",INDEX($A$1:$A1,AGGREGATE(14,6,ROW($1:1)/($A$1:$A1=A2),1)+1)=""),INDEX(B:B,MATCH(A2,$A$1:$A1,0),1),1)),IF(B1=1,2,IF(B1=2,1,""))))))假设您的数据看起来像这样
    enter image description here
    解释
    按照以下顺序进行一系列检查
  • ISBLANK(A2) : 检查单元格是否为空。如果它为空,则保持输出为空。
  • A2="Z" :检查单元格是否有“Z”。输出 0 .
  • A2<>A1 :检查 A 列中的值是否发生变化。如果没有,则从顶部获取值。如果它发生变化,请查看下一个检查
  • 然后我们使用 INDEXAGGREGATE()进行反向匹配以查找该值的出现,如果找到匹配项,则从列 B 中提取相应的值
  • 关于excel - 如何确定连续值组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63083653/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com