Transpor dados da linha / coluna que corresponde a determinados critérios

0

Eu fiz uma pesquisa que solicitou uma pontuação e uma prioridade para cada pergunta.

Os dados de resposta listam cada componente em linhas individuais, de modo que ele trata a pontuação e a prioridade como perguntas diferentes, em vez de respostas diferentes para a pergunta mesma , assim:

Atualmente,seoIDdaperguntaforx.x.1,éumapontuação,masseoIDforx.x.2,éumaprioridade.

EuprecisoqueelesejaapresentadoparaqueaPontuaçãoeaPrioridadesejamlistadascomovaloresnascolunasdecadapergunta,assim:

Alguma ideia de como chegar lá?

Em última análise, estou tentando tornar isso uma tabela fixa que é pivotável. Mas agora, se eu tentar girar, não posso separar Pontuação e Prioridade. Trata-os como questões separadas, em vez de duas pontuações diferentes para a mesma pergunta, como deveria ser.

    
por WillyP713 09.05.2016 / 20:05

3 respostas

0

Solução: usei um método de vários passos semelhante ao sugerido pelo @gtwebb, exceto por algo menos elegante.

  1. Use Text-to-Columns para dividir a última casa decimal da ID da pergunta (essa é realmente a chave para isso). O último decimal me diz que é 1 = Pontuação ou 2 = Prioridade.
  2. Use uma instrução if() para procurar o valor "2" na minha nova coluna. Se houver, copie o valor de prioridade associado para uma nova coluna Prioridade . Se não estiver lá, deixe em branco. Copie a fórmula para baixo.
  3. Em seguida, filtre e exclua todas as linhas com valor "2" porque minhas linhas com valor "1" agora têm Pontuação e Prioridade em duas colunas a mesma linha.
  4. Renomeie as colunas conforme necessário.
  5. Pivot, ??? e lucro !!
por 10.05.2016 / 00:05
0

Algo parecido com isso funcionará, dependendo dos seus dados

Option Explicit
Sub ScorePriority()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Dim i As Long

    For i = lastRow To 2 Step -1
        If Cells(i, 2) = Cells(i - 1, 2) And _
        Cells(i, 3) = Cells(i - 1, 3) And _
        Left(Cells(i, 4), 4) = Left(Cells(i - 1, 4), 4) Then
            Cells(i - 1, 6) = Cells(i, 5)
            Cells(i).EntireRow.Delete shift:=xlUp
        End If
    Next

End Sub
    
por 09.05.2016 / 20:34
0

Você pode experimentar o Microsoft Add-In gratuito Consulta de energia (do Excel 2010). É bastante intuitivo para carregar e transformar seus dados conforme representado na segunda tabela. O Excel 2016 está totalmente integrado no Excel (Get e Transform).

Siga estas etapas na interface do usuário do Power Query:

  1. Importe os dados no Power Query (Consulta de energia da faixa de opções - > da tabela, o cursor deve estar em algum lugar nos dados)
  2. (opcional) altera o tipo da coluna Pergunta ao texto (dependendo das configurações do sistema operacional para a formatação do número, o PQ reconhecerá o 1.1.1 como uma data)
  3. Clique com o botão direito na coluna Pergunta - > Coluna dividida por delimitador - > na extrema direita, delimitador, delimitador --Personalizado-- =.
  4. Selecione a nova coluna question.2, abaixo da faixa de opções Transform, clique em Pivot Column, defina Score como value
  5. Renomeie as colunas "Question.1", "1", "2" para "Question", "Score", "Priority" (com duplo clique no nome da coluna)
  6. Feche e carregue no Excel (Página inicial da faixa de opções)

aqui o script do Power Query, que é produzido pela interface do usuário.

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"FirstName", type text}, {"LastName", type text}, {"Question", type text}, {"Score", Int64.Type}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type","Question",Splitter.SplitTextByEachDelimiter({"."}, QuoteStyle.Csv, true),{"Question.1", "Question.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Question.1", type number}, {"Question.2", Int64.Type}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type1", {{"Question.2", type text}}, "de-CH"), List.Distinct(Table.TransformColumnTypes(#"Changed Type1", {{"Question.2", type text}}, "de-CH")[Question.2]), "Question.2", "Score", List.Sum),
    #"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"Question.1", "Question"}, {"1", "Score"}, {"2", "Priority"}})
in
    #"Renamed Columns"
    
por 10.05.2016 / 17:37