AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1808426
Accepted
Dave
Dave
Asked: 2023-09-15 00:29:16 +0800 CST2023-09-15 00:29:16 +0800 CST 2023-09-15 00:29:16 +0800 CST

Consulta avançada: consulte uma coluna por nome armazenado como um parâmetro de texto

  • 772

Estou usando o Power Query no Excel para Microsoft 365.

Aqui está minha tabela de dados de origem (cujo nome da tabela é Source ):

Col1 Col2 Col3 Col4 Nome Alt.Nome
11 21 31 41 Cachorro Fido
12 22 32 42 Gato Fofinho
23 33 43 Avestruz janeiro
14 24 44 Periquito Prumo
15 25 35 45 Truta Cindy

Eu defini dois parâmetros de texto:

  • ColToKeepespecifica qual das colunas Col1, Col2, Col3e Col4manter. As colunas não especificadas serão descartadas.
  • NameToKeepespecifica qual das colunas Namedeve Alt.Nameser mantida. A coluna não especificada será descartada.

Meu objetivo é desenvolver uma Power Query para:

  1. Remova todas as colunas, exceto as duas especificadas por ColToKeepeNameToKeep
  2. Filtre as linhas onde há um nulo na coluna especificada porColToKeep

Supondo que eu configurei ColToKeepcomo Col3 e que configurei NameToKeepcomo Alt.Name , o resultado desejado é:

Col3 Alt.Nome
31 Fido
32 Fofinho
33 janeiro
35 Cindy

No entanto, o resultado real ( incorreto ) é:

Col3 Alt.Nome
31 Fido
32 Fofinho
33 janeiro
Prumo
35 Cindy

Aqui está o código da linguagem M para meu Power Query:

let
    Source = Excel.CurrentWorkbook(){[Name="Source"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Col1", Int64.Type}, {"Col2", Int64.Type}, {"Col3", Int64.Type}, {"Col4", Int64.Type}, {"Name", Text.Type}, {"Alt.Name", Text.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{ColToKeep, NameToKeep}),
    // #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each [ColToKeep] <> null and [ColToKeep] <> "")
    // #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each ColToKeep <> null and ColToKeep <> "")
    // #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each Table.ColumnNames(#"Removed Other Columns"){0} <> null and Table.ColumnNames(#"Removed Other Columns"){0} <> "")
in
    #"Filtered Rows"

É a etapa aplicada #"Filtered Rows" que está dando errado. No código acima, mostro três tentativas (comentadas) que fiz para implementar esta etapa aplicada.

Na primeira tentativa, simplesmente me refiro diretamente aos nomes das colunas (com colchetes). No entanto, ColToKeepe NameToKeepsão considerados referências às colunas de interesse, não como sequências de texto que contêm os nomes das colunas. Um erro é gerado porque, por exemplo, não há coluna chamada ColToKeep .

Na segunda tentativa, novamente me refiro diretamente aos nomes das colunas, mas desta vez sem colchetes. Isso não gera um erro, mas recebo a saída incorreta mostrada acima.

Na terceira tentativa, refiro-me às colunas pela sua posição, pois não sei até o tempo de execução quais colunas estão sendo mantidas. Após a execução da etapa aplicada #"Removed Other Columns" anterior , restarão duas colunas. Presumi que seus índices de posição seriam 0 e 1, mas suspeito que os índices de posição ainda não tenham sido ajustados quando a Table.SelectRowschamada for executada e que, portanto, não estou fazendo referência à coluna que pretendo ao filtrar valores nulos . Isso não gera um erro, mas gera a saída incorreta mostrada acima.

Como posso filtrar linhas com base em valores nulos na coluna nomeada pelo parâmetro ColToKeep?

microsoft-excel
  • 1 1 respostas
  • 26 Views

1 respostas

  • Voted
  1. Best Answer
    AdamV
    2023-09-15T06:34:10+08:002023-09-15T06:34:10+08:00

    Solte temporariamente os cabeçalhos para a primeira linha, que numerará as colunas como 1 e 2, depois filtre os nulos e promova novamente a primeira linha como cabeçalhos:

    let
        Source = Excel.CurrentWorkbook(){[Name="Source"]}[Content],
        #"Removed Other Columns" = Table.SelectColumns(Source,{ColToKeep, NameToKeep}),
        #"Demoted Headers" = Table.DemoteHeaders(#"Removed Other Columns"),
        #"Changed Type" = Table.TransformColumnTypes(#"Demoted Headers",{{"Column2", type text}}),
        #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Column1] <> null)),
        #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [Column2] <> null),
        #"Promoted Headers" = Table.PromoteHeaders(#"Filtered Rows1", [PromoteAllScalars=true])
    in
        #"Promoted Headers"
    
    • 1

relate perguntas

  • Excel Pivot com operador "e"

  • Como usar a função LENGTH do Excel para uma coluna inteira?

  • Matriz do Excel (2 variáveis)

  • como abrir um arquivo de escritório do WSL

  • VBA para renomear planilha com base no nome do arquivo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve