Tabela dinâmica – Resumindo várias colunas de dados independentes

Tabela dinâmica – Resumindo várias colunas de dados independentes

Eu tenho uma tabela grande contendo entradas diárias em um sistema, que possui as colunas conforme mostrado:

Dia Itemname1 Itemquant1 Itemname2 Itemquant2 .....

Os nomes e quantidades dos itens são independentes um do outro. Em um dia, pode-se receber 10 itens A, e em outro dia, pode-se receber 5 do item D, 6 do item B e 234 do item C. No primeiro caso, apenas 2 colunas terão dados, e no último caso, 6 colunas terão dados. Todas as outras colunas estarão vazias. Um exemplo:

Day N1  Q1  N2  Q2  N3  Q3
1   A   10
2   D   5   B   6   C   234

Como uma tabela dinâmica seria usada para exibir, digamos, as quantidades de A diariamente durante um ano, ou o número de valores diferentes de zero de A em um ano? Observe que A pode aparecer em múltiplas colunas e há centenas de itens possíveis, portanto não é viável simplesmente criar uma tabela com cada variável em uma coluna.

Tentei somar todas as colunas de várias maneiras, mas acaba retornando os valores de A, dados todos os valores de B, dados todos os valores de C, o que é útil se os valores forem dependentes, mas desorganiza a página uma vez que não estão correlacionados.

Caso isso não seja possível, qual seria um bom método para obter as informações exigidas da planilha?

Responder1

Você precisa desesperadamente reorganizar seus dados. É realmente uma má ideia ter um número indeterminado de colunas pelos motivos que você está enfrentando agora. Meu conselho é, como outros sugeriram, converter seus dados em uma tabela simples de três colunas com uma linha para cada item diário.

Day  Item  Quant
 1     A     10
 2     D      5
 2     B      6
 2     C    234

Em seguida, você pode usar uma tabela dinâmica para resumir e detalhar os dados conforme desejar.

Então, agora a questão é como reorganizar esses dados em um número indeterminado de colunas. Felizmente, um procedimento VBA bastante simples pode fazer isso. Cole o código abaixo em um novo módulo VBA (pressione Alt+ F11e vá para Insert> Module).

Sub SalvageMyTable()
Dim sOrig As Worksheet, sOut As Worksheet
Dim arrIn() As Variant
Dim rOut As Range, arrOut() As Variant
Dim i As Long, j As Long, k As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set sOrig = ActiveSheet
'Store original data in an array for faster processing
arrIn = sOrig.UsedRange.Value
'Create maximal output array. This can be resized before outputting the data.
ReDim arrOut(0 To 2, 0 To UBound(arrIn, 1) * (UBound(arrIn, 2) - 1) / 2) As Variant
'Loop through original table and copy values to output array.
For i = LBound(arrIn, 1) + 1 To UBound(arrIn, 1)
    For j = LBound(arrIn, 2) + 1 To UBound(arrIn, 2) Step 2
        If arrIn(i, j) <> "" Then
            arrOut(0, k) = arrIn(i, LBound(arrIn, 2))
            arrOut(1, k) = arrIn(i, j)
            arrOut(2, k) = arrIn(i, j + 1)
            k = k + 1
        Else
            Exit For
        End If
    Next j
Next i
'Resize output array
ReDim Preserve arrOut(0 To 2, 0 To k) As Variant
'Create output sheet and print output there.
Set sOut = Worksheets.Add
sOut.Name = "Reorganized Data"
sOut.Range("A1").Value = "Day"
sOut.Range("B1").Value = "Item"
sOut.Range("C1").Value = "Quantity"
sOut.Range("A2").Resize(k, 3).Value = Application.WorksheetFunction.Transpose(arrOut)
'Reset Excel settings
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Certifique-se de ter a planilha com seus dados originais aberta. Em seguida, vá para o editor VBA e execute este código (pressionando F5). Este código produzirá os dados transformados em três colunas em uma nova planilha chamada “Dados Reorganizados”.

Responder2

Para poder concluir de forma confiável a análise de dados nesse conjunto de dados, você precisa alterar a forma como os dados são configurados/organizados/inseridos.

Isso pode ser feito no Excel, mas também seria um banco de dados muito fácil de configurar.

Tabela para itens (número do item, nome, descrição)
Tabela para veículos (número do veículo, nome, descrição, tipo, marca do modelo)
Tabela de uso (número do item, número do veículo, data, número usado)

Você também pode fazer isso no Excel com planilhas diferentes e usando a validação de dados para fornecer uma lista suspensa do item e do veículo na planilha de uso. Se você não tem experiência em programação essa pode ser a melhor opção.

Desculpe não responder ao seu problema, mas o verdadeiro problema é a organização dos seus dados.

Responder3

Você primeiro converterá a tabela no formato Day NQ abaixo com dados de amostra como

1 A 10
2 D 6
2 B 6
2 C 234

Então, se você girar nesta tabela, deverá obter o resultado. Para converter na tabela acima, você cria uma nova planilha. Suponha que você tenha 10 linhas e 3 pares de quantidades de nomes na planilha principal (assumindo Planilha1 como o nome da planilha e não a linha/coluna do cabeçalho), então você pode usar a fórmula abaixo na nova planilha da linha 1 a 30 (10 * 3)

1    =Sheet1!A1  =Sheet1!B1  =Sheet1!C1
    ...
10   =Sheet1!A10  =Sheet1!B10  =Sheet1!C10
11   =Sheet1!A1  =Sheet1!D1  =Sheet1!E1
    ...
20   =Sheet1!A10  =Sheet1!D10  =Sheet1!E10
21   =Sheet1!A1  =Sheet1!F1  =Sheet1!G1
    ...
30   =Sheet1!A10  =Sheet1!F10  =Sheet1!G10

Responder4

Por favor, encontre esta imagem abaixo. Os uns representam a peça que foi reparada e o zero representa a peça que “não foi alterada”. Se é assim que seus dados são representados, você pode usar uma tabela dinâmica simples para resolver seu problema.
insira a descrição da imagem aqui

informação relacionada