OFFSET Função no Excel apenas para dados não duplicados

1

Eu quero usar a função OFFSET para triplicar os dados em uma coluna. Mas eu tenho alguns dados duplicados (às vezes mais de 2 repetições) que eu quero apenas triplicar um deles não ambos e manter o outro. Aqui estão os meus dados e função:

 =OFFSET($A$2,INT((ROWS($A$2:A2)-1)/3),0)
               A
 2      5YJSA3H17EFP49729
 3      5YJSA3H17EFP41128
 4      5YJSA3H17EFP30954
 5      5YJSA3H17EFP30954
 6      5YJSA3H17EFP30212
 7      5YJSA3H17EFP30050

Neste exemplo, o 5YJSA3H17EFP30954 está duplicado, mas eu só quero executar o OFFSET em um deles e manter o outro, então eu quero ter 4 repetições disso.

    
por Ferra Xu 14.07.2015 / 19:27

1 resposta

1

Se você inserir esses dados em B2 e C2

B2
=IFERROR(IF(AND(A2=A1;B1=3);1;IF(AND(A2=A1;B1<3);0;3));3)

C2
=IFERROR(OFFSET(B2;-1;0)+OFFSET(C2;-1;0);0)

e, em seguida, preencha as colunas B e C com essas, você receberá uma tabela para:
B) quantas vezes cada item (na mesma linha) deve repetir na coluna
C) qual linha de deslocamento A1 para escolher o valor repetido de.

Agora, não acho que isso seja possível com fórmulas.

O VBA precisa ser usado; abaixo você encontra um "sub" (com a lógica / fórmulas escolhidas de cima) que irá criar a tabela solicitada, dada a sua tabela começando em A1

Sub createDupeTable()

  r = 1: c = 1   ' Assumption: for accessing A1 with Cells(r,c)
  br = 1: bc = c + 1 ' where to start inserting copies, Cells(br,bc)

 ' value in "B1" (above) always 3
  pz = 3

  Do While Cells(r, c).Value <> ""
    a1 = Cells(r, c).Value
    a2 = Cells(r + 1, c).Value
    b1 = pz
    If a2 = a1 And b1 = 3 Then
      Z = 1
    Else
      If a2 = a1 And b1 < 3 Then
        Z = 0
      Else
        Z = 3
      End If
    End If

    pz = Z
    Do While Z > 0
      Cells(br, bc).Value = Cells(r, c).Value ' copy one value from the list
      Z = Z - 1
      br = br + 1
    Loop

    r = r + 1
  Loop
End Sub

O resultado:

     A                   B
1   5YJSA3H17EFP49729   5YJSA3H17EFP49729
2   5YJSA3H17EFP41128   5YJSA3H17EFP49729
3   5YJSA3H17EFP30954   5YJSA3H17EFP49729
4   5YJSA3H17EFP30954   5YJSA3H17EFP41128
5   5YJSA3H17EFP30212   5YJSA3H17EFP41128
6   5YJSA3H17EFP30050   5YJSA3H17EFP41128
7                       5YJSA3H17EFP30954
8                       5YJSA3H17EFP30954
9                       5YJSA3H17EFP30954
10                      5YJSA3H17EFP30954
11                      5YJSA3H17EFP30212
12                      5YJSA3H17EFP30212
13                      5YJSA3H17EFP30212
14                      5YJSA3H17EFP30050
15                      5YJSA3H17EFP30050
16                      5YJSA3H17EFP30050
    
por 15.07.2015 / 19:59