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 / user-478711

Dave's questions

Martin Hope
Dave
Asked: 2024-08-28 21:37:15 +0800 CST

Como calcular a duração total de um número arbitrário de tarefas rastreadas no Excel?

  • 7

Estou usando o Microsoft 365 Excel e estou tentando criar uma planilha para rastrear o tempo cobrado para diferentes números de cobrança diariamente. Nunca será o caso de uma cobrança abranger meia-noite.

Há um número arbitrário de números de cobrança que podem ser cobrados, e qualquer número de cobrança pode ter vários períodos de tempo associados a ele.

Estou tentando criar uma planilha que se adapte automaticamente a qualquer número de números de cobrança e a qualquer número de cobranças para um determinado número de cobrança.

Aqui está um exemplo da tabela que criei para monitorar o tempo que gasto em vários números de cobrança ao longo do dia:

Exemplo de controle de tempo 1

Para ilustrar o que estou tentando realizar, criei manualmente uma tabela resumindo meu tempo conforme preciso que ele seja resumido (por número de cobrança):

Resumo de tempo por número de carga Exemplo 1

Como a primeira tabela é formatada como uma tabela, eu posso simplesmente clicar com o botão direito na linha Total e selecionar Inserir e uma nova linha será adicionada e as fórmulas nas colunas Duração e Duração Total Cumulativa serão copiadas para baixo. Eu preciso apenas inserir valores nas colunas Início , Parada e Número de Cobrança . Tudo nesta tabela será atualizado automaticamente conforme desejado.

O objetivo é fazer com que a segunda tabela seja atualizada automaticamente quando eu atualizar a primeira tabela. Aqui está um exemplo com linhas adicionadas ao que foi apresentado acima e a atualização automática que eu gostaria de ver acontecer na segunda tabela:

Exemplo de controle de tempo 2

Resumo de tempo por número de carga Exemplo 2

Acho que uma tabela dinâmica pode ser a solução, mas até agora não consegui fazê-la funcionar.

Como posso fazer com que a segunda tabela também seja atualizada automaticamente quando adiciono uma nova linha à primeira tabela?

Atualização para adicionar informações solicitadas em um comentário

Mostre seu trabalho até agora — qual fórmula foi usada para encontrar a duração, para adicionar itens para o mesmo número de trabalho, etc.

As colunas Início e Fim são formatadas como Time 1:30 PM. As colunas Duração (primeira tabela), Duração Total Cumulativa e Duração (segunda tabela) são formatadas como Custom h:mm.

A fórmula para Duração (primeira tabela) é simplesmente =[@Stop]-[@Start]. (Novamente, um limite de meia-noite nunca será ultrapassado, então isso é suficiente.)

A fórmula para Cumulative Total Duration é =C2+IF(ISTEXT(G1), 0, G1). A chamada para ISTEXT()impede que a linha de cabeçalho seja "adicionada" em.

Não há fórmulas na segunda tabela (ou seja, tempos para o mesmo trabalho). Coloquei manualmente os valores naquela tabela e calculei manualmente os totais para demonstrar o que estou tentando realizar de forma automatizada.

microsoft-excel
  • 2 respostas
  • 131 Views
Martin Hope
Dave
Asked: 2023-11-20 22:35:22 +0800 CST

Power Query: Combine o subconjunto da lista de tabelas existentes

  • 5

Estou usando o Power Query no Excel para Microsoft 365.

Tenho um Power Query cujo primeiro passo é combinar um conjunto de tabelas:

let
    Source = Table.Combine({One_foo_bar, Two_foo_bar, Three_foo_bar, Four_foo_bar, Five_foo_bar, Six_foo_bar, Seven_foo_bar, Eight_foo_bar}),
    // ...
    #"Result" = ...
in
    #"Result"

O problema é que nem todas as tabelas nomeadas podem existir. Qualquer subconjunto das tabelas pode existir. Aqueles que existem estão em ThisWorkbook. Se algum estiver faltando, o código M mostrado acima gerará um erro.

Se a correspondência de padrões puder ajudar a resolver esse problema, todos os nomes das tabelas seguirão o padrão * _foo_bar . M não parece ter suporte para esse tipo de correspondência de padrões, mas incluo esta afirmação caso alguém saiba algo que não sei e possa utilizar esse fato para formular uma solução.

Como posso modificar este código para combinar as tabelas que existem?

microsoft-excel
  • 3 respostas
  • 66 Views
Martin Hope
Dave
Asked: 2023-10-02 23:50:17 +0800 CST

Power Query: divisão de células multiníveis

  • 6

Estou usando o Power Query no Excel para Microsoft 365.

Eu tenho os seguintes dados de origem:

Dados de origem

Estou tentando determinar as transformações necessárias para obter o seguinte resultado desejado:

Resultado desejado

Os dados de origem possuem uma hierarquia de dados nas células de Col2 . Gostaria de manter os dados no primeiro nível de hierarquia em Col2 e gostaria de criar colunas separadas ( Col2.1 , Col2.2 , ..., Col2.N ) para o segundo nível de hierarquia e subsequentes.

Os valores individuais na célula são separados por um avanço de linha ( #(lf) ), e o nível de hierarquia de um determinado valor é determinado pelo seu nível de recuo (cada nível de recuo é representado por três caracteres de espaço).

O pai de um determinado valor na hierarquia é determinado por ordem. Por exemplo, String1.2está no segundo nível de recuo. Com base apenas no nível de indentação, ele poderia, portanto, ser colocado hierarquicamente em String1ou String2. Porém, como aparece antes String1e depois String2, deve ser colocado hierarquicamente abaixo String1.

Observe que os nomes String * que escolhi são nomes higienizados e foram escolhidos para ilustrar o que estou tentando realizar. Meus dados reais não possuem prefixos iniciais previsíveis e não implicam uma hierarquia por seu conteúdo lexical. Portanto, a lógica de divisão não deve basear-se nos próprios valores. Deve basear-se apenas no nível de recuo de um valor e na ordem relativa a outros valores e seus níveis de recuo.

Aqui está o código da linguagem M que tenho até agora:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Col1", type text}, {"Col2", type text}}),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Col2", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Col2")
in
    #"Split Column by Delimiter"

Este código da linguagem M produz este resultado real:

Resultado atual

Exemplos adicionais de dados de origem/resultados desejados são mostrados a seguir.

Exemplo 1 Dados de origem
Fonte 1

Exemplo 1 Resultado Desejado
Desejado 1

Exemplo 2 Dados de origem
Fonte 2

Exemplo 2 Resultado Desejado
Desejado 2

Exemplo 3 Dados de origem
Fonte 3

Exemplo 3 Resultado Desejado
Desejado 3

Exemplo 4 Dados de origem
Fonte 4

Exemplo 4 Resultado Desejado
Desejado 4

Exemplo 5 Dados de origem
Fonte 5

Exemplo 5 Resultado Desejado
Desejado 5

Exemplo 6 Dados de origem
Fonte 6

Exemplo 6 Resultado Desejado
Desejado 6

Exemplo 7 Dados de origem
Fonte 7

Exemplo 7 Resultado Desejado
Desejado 7

Exemplo 8 Dados de origem
Fonte 8

Exemplo 8 Resultado Desejado
Desejado 8

Exemplo 9 Dados de origem
Fonte 9

Exemplo 9 Resultado Desejado
Desejado 9

Exemplo 9 Resultado Real
Real 9

Que etapas aplicadas adicionais devo adicionar ao meu código da linguagem M para transformar os exemplos de dados de origem fornecidos nos resultados desejados mostrados acima?

microsoft-excel
  • 1 respostas
  • 307 Views
Martin Hope
Dave
Asked: 2023-09-27 23:35:34 +0800 CST

Consulta avançada: dividindo células com vários valores em linhas sem criar todas as combinações possíveis

  • 5

Estou usando o Power Query no Excel para Microsoft 365.

Algumas das minhas colunas possuem células com vários valores. Preciso dividir essas células em linhas. Considere estes dados de origem:

Dados de origem

O código da linguagem M para meu Power Query é o seguinte;

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Pet Type", type text}, {"Items Needed", type text}, {"Item Purpose", type text}, {"Typical Name", type text}}),
    #"Split Items Needed" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"Items Needed", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Items Needed"),
    #"Split Item Purpose" = Table.ExpandListColumn(Table.TransformColumns(#"Split Items Needed", {{"Item Purpose", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Item Purpose")
in
    #"Split Item Purpose"

Isso resulta neste resultado real:

Resultado atual

Aqui está o resultado desejado:

Resultado desejado

Como devo ajustar meu Power Query para obter o resultado desejado?

microsoft-excel
  • 1 respostas
  • 51 Views
Martin Hope
Dave
Asked: 2023-09-19 01:59:34 +0800 CST

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

  • 5

Estou usando o Power Query no Excel para Microsoft 365.

A questão que vou colocar é muito semelhante a outra que coloquei recentemente e à qual foi dada uma resposta elegante. Essa pergunta está aqui: Power Query: consulte uma coluna por nome armazenado como um parâmetro de texto

Na questão vinculada acima, precisei filtrar linhas com base na nulidade de uma coluna cuja posição era constante (sempre a primeira coluna) mas cujo nome era difícil de usar porque estava armazenado em um parâmetro de texto. A resposta foi rebaixar os cabeçalhos (dando-lhes nomes previsíveis), filtrar com base na nulidade de Column1 e promover os cabeçalhos (para trazer de volta seus nomes originais). O parâmetro de texto que contém o nome da coluna acabou não entrando em ação.

Na questão atual, preciso novamente filtrar as linhas com base na nulidade de uma coluna cujo nome está armazenado em um parâmetro de texto, mas desta vez nem sempre será a primeira coluna. Pode ser a primeira, segunda, terceira ou quarta coluna. Então, desta vez, eu realmente preciso usar o parâmetro que especifica o nome da coluna.

Apresentarei novamente minha pergunta original, alterada para refletir esse novo requisito.

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

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

Eu defini um parâmetro de texto:

  • FilterColumnespecifica o nome da coluna que será usada para filtrar valores nulos . Pode assumir qualquer um dos valores Col1 , Col2 , Col3 ou Col4 .

Meu objetivo é desenvolver um Power Query para filtrar linhas onde há um nulo na coluna especificada por FilterColumn.

Supondo que eu configurei FilterColumnCol3 , o resultado desejado é:

Col1 Col2 Col3 Col4 Nome
11 21 31 41 Cachorro
12 22 32 42 Gato
23 33 43 Avestruz
15 25 35 45 Truta

Aqui está o código da linguagem M para minha consulta do Power:

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}}),
    // #"Filtered Rows" = Table.SelectRows(#"Changed Type", each [FilterColumn] <> null and [FilterColumn] <> "")
    // #"Filtered Rows" = Table.SelectRows(#"Changed Type", each FilterColumn <> null and FilterColumn <> "")
in
    #"Filtered Rows"

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

Na primeira tentativa, simplesmente me refiro diretamente ao nome da coluna (entre colchetes). No entanto, FilterColumné considerado o nome da coluna de interesse, e não como um parâmetro de texto que contém o nome da coluna. Um erro é gerado porque não há coluna chamada FilterColumn :Expression.Error: The field 'FilterColumn' of the record wasn't found.

Na segunda tentativa, novamente me refiro diretamente ao nome da coluna, mas desta vez sem colchetes. Isso não gera um erro, mas nenhuma linha é filtrada. A saída permanece inalterada em relação à entrada.

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

microsoft-excel
  • 2 respostas
  • 41 Views
Martin Hope
Dave
Asked: 2023-09-15 00:29:16 +0800 CST

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

  • 5

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 respostas
  • 26 Views
Martin Hope
Dave
Asked: 2023-08-26 00:53:16 +0800 CST

Consulta avançada: vincule novamente uma consulta a uma planilha/tabela que foi excluída e recriada

  • 5

Estou usando o Power Query no Excel para Microsoft 365. Estou usando o VBA, em vez da interface gráfica, para executar operações do Power Query.

Suponha que eu tenha uma pasta de trabalho existente, com essa pasta de trabalho contendo duas tabelas Source_te Sink_t(em planilhas denominadas Source_we Sink_w, respectivamente) e que tenho uma consulta chamada Sink_qque obtém dados de Source_t, realiza algumas transformações neles e carrega os resultados em Sink_t.

Considere o seguinte código VBA:

Sub foo()
    Dim Current As Worksheet
    
    ' Side question: Is there a better way to check for the existence of a worksheet before trying to delete it?
    For Each Current In Worksheets
        If (Current.Name = "Sink_w") Then
            Application.DisplayAlerts = False
            Current.Delete
            Application.DisplayAlerts = True
            
            Exit For
        End If
    Next
    
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Sink_w"
    ActiveWorkbook.RefreshAll
End Sub

Quando o código VBA é excluído Sink_w(e, ao fazê-lo, Sink_ttambém), Sink_qele se transforma em uma consulta "Somente conexão". Quando o código VBA recria Sink_we executa uma atualização completa, Sink_tnão é recriado (e, obviamente, a saída da consulta não é carregada porque não há tabela para carregá-la).

Mas Sink_wé recriado e posso usar a opção "Carregar para..." da interface gráfica do Power Query para criar uma tabela Sink_we carregar dados nessa tabela. (Mas observe que o nome da tabela criada é Sink_q--- o mesmo nome da consulta --- não Sink_tconforme necessário. Se eu renomear manualmente a tabela para Sink_t, as coisas ainda funcionarão como esperado quando eu atualizar tudo.)

Minhas perguntas

No VBA, como posso:

  1. Vincular Sink_qnovamente para Sink_tque uma atualização de tudo seja criada sink_t(na planilha sink_w) e preencha essa tabela?
  2. Controlar o nome da tabela criada para que fique Sink_t, não Sink_q?
microsoft-excel
  • 1 respostas
  • 26 Views
Martin Hope
Dave
Asked: 2023-08-15 21:48:18 +0800 CST

Power Query: executar etapas aplicadas para uma coluna somente se existir, evitar erros se não existir

  • 6

Estou usando o Power Query no Excel para Microsoft 365.

Por favor, considere o seguinte código M Language:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type of all to Text" = Table.TransformColumnTypes(Source,{{"A", type text}, {"B", type text}, {"C", type text}}),
    #"Removed Unneeded Columns" = Table.RemoveColumns(#"Changed Type of all to Text",{"A"}),
    ...
in
    #"Removed Duplicate Rows"

O problema que estou enfrentando é que a coluna A nem sempre está presente na tabela de origem. Se estiver presente, deve ser removido. No entanto, incluí-lo no código M Language induz um erro nas instâncias em que não está presente.

Como posso alterar meu código M Language para lidar efetivamente com o caso da coluna A estar presente e o caso da coluna A não estar presente?

microsoft-excel
  • 1 respostas
  • 28 Views
Martin Hope
Dave
Asked: 2023-08-03 22:09:11 +0800 CST

Power Query: Por que os filtros de texto removem valores nulos?

  • 5

Declaração do problema

Estou usando o Power Query no Excel para Microsoft 365.

Encontrei casos em que a aplicação de um filtro de texto a uma coluna corresponde a valores nulos . Isso resulta na remoção indesejada de linhas. Encontrei uma solução alternativa para isso, mas estou tentando entender por que esse comportamento ocorre ou se é um bug.

A captura de tela abaixo mostra meus dados não filtrados e o resultado da aplicação deste filtro M Language:

= Table.SelectRows(#"Changed Type", each not Text.EndsWith([Column 2], "foo"))

insira a descrição da imagem aqui

Ao substituir valores nulos no predicado do filtro, obtemos:

not Text.EndsWith(null, "foo")
not false
true

Portanto, a linha "tamanduá" deve ser mantida (já que o valor dessa linha para "Coluna 2" não termina em "foo"), mas a linha é descartada .

Gambiarra

Suponha que eu altere o filtro da seguinte maneira:

= Table.SelectRows(#"Changed Type", each not Text.EndsWith([Column 2], "foo") Or [Column 2] = null)

Neste caso, obtemos:

insira a descrição da imagem aqui

Este é o resultado desejado.

Minha pergunta

Por que as linhas com um valor nulo na "Coluna 2" estão sendo filtradas pelo meu primeiro filtro? Ou isso é um bug?

Editar para adicionar demonstração da resposta selecionada

A resposta de Ron Rosenfeld foi bastante instrutiva. Achei que deveria acrescentar uma demonstração do que ele sugeriu. Tentei entender o comportamento. Ao adicionar colunas personalizadas como Ron sugere, aqui está o resultado:

insira a descrição da imagem aqui

microsoft-excel
  • 1 respostas
  • 37 Views
Martin Hope
Dave
Asked: 2023-07-31 21:44:46 +0800 CST

Excel para Microsoft 365: alterar a largura das colunas com base no nome da coluna na linha do cabeçalho

  • 5

Estou usando o Excel para Microsoft 365.

Na primeira planilha, gravei uma macro para ajustar as larguras das colunas e as alturas das linhas. Em seguida, mudei para a segunda planilha e executei essa macro e percebi que tenho o problema descrito abaixo.

Cada planilha contém pelo menos uma (talvez várias) colunas cujo nome da coluna na linha do cabeçalho (linha 1) contém a string "foo". As localizações dessas colunas variam de planilha para planilha.

Existem algumas etapas que executo em todas as colunas. Essas etapas funcionam bem. No entanto, há uma etapa extra que gostaria de executar na(s) coluna(s) "foo". Especificamente, gostaria de alterar a largura dessas colunas para 30. Como os locais dessas colunas variam de planilha para planilha, isso não é tão simples de fazer.

Aqui está o código VBA que ilustra o problema:

Sub Macro1()
    ' This part works.
    Application.Goto Reference:="R1C1"
    Cells.Select

    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

    Columns("A:A").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ColumnWidth = 100

    Cells.Select
    Cells.EntireRow.AutoFit
    Cells.EntireColumn.AutoFit

    ' The problem starts here.
    ' How may I do this for all columns whose column name in the header row contains "foo"?
    ' There are an arbitrary number of such columns and their locations vary from worksheet to worksheet.
    Columns("G:G").Select
    Selection.ColumnWidth = 30
    Columns("L:L").Select
    Selection.ColumnWidth = 30

    ' The rest of this macro works fine.
    Cells.Select
    Cells.EntireRow.AutoFit

    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
    End With

    ActiveWindow.FreezePanes = True
End Sub

Neste código, defino as colunas G e L para ter largura 30. Em vez de codificar as colunas, como posso alterar este código para definir a largura para 30 de qualquer coluna cujo nome da coluna (na linha do cabeçalho) contenha "foo"?

microsoft-excel
  • 1 respostas
  • 21 Views
Martin Hope
Dave
Asked: 2023-07-17 19:50:50 +0800 CST

Editor do Power Query: por que os valores nulos são correspondentes em uma junção interna?

  • 7

Estou usando o Editor do Power Query no Excel para Microsoft 365.

A Tabela A tem um ID de coluna que contém um identificador exclusivo. Esse identificador geralmente é numérico, mas às vezes contém texto. Diante disso, defini o tipo de dados desta coluna como Text .

A Tabela B também possui um ID de coluna com as mesmas propriedades descritas acima.

Estou realizando uma junção interna (merge) nessas duas tabelas com ID como coluna de junção:

= Table.NestedJoin(A, {"ID"}, B, {"ID"}, "B", JoinKind.Inner)

Essa junção interna está correspondendo a nulos, o que eu não achava que deveria acontecer.

insira a descrição da imagem aqui

Como solução alternativa, adicionei uma Etapa aplicada para filtrar valores nulos nessas colunas. Mas, gostaria de chegar à raiz do problema.

Como posso impedir que valores nulos correspondam? Ou estou incorreto em meu entendimento de que dois nulos nunca devem corresponder?

microsoft-excel
  • 1 respostas
  • 94 Views
Martin Hope
Dave
Asked: 2023-07-14 01:04:25 +0800 CST

Editor do Power Query: Tira zeros à esquerda de valores numéricos armazenados como texto

  • 6

Estou usando o Editor do Power Query no Excel para Microsoft 365.

A tabela Atem uma coluna IDque contém um identificador exclusivo. Esse identificador geralmente é numérico, mas às vezes contém texto. Diante disso, defini o tipo de dados desta coluna como Text.

Em alguns casos, os valores nesta coluna aparecem numéricos, mas têm um ou mais zeros à esquerda (por exemplo, "042"). Como isso está sendo tratado como um valor de texto, todos os zeros à esquerda são retidos.

A tabela Btambém possui uma coluna IDdo tipo Textque também contém um identificador exclusivo que geralmente é numérico, mas às vezes contém texto. A única diferença entre A.IDe B.IDé que quando B.IDos valores são numéricos, eles nunca têm zeros à esquerda.

Estou tentando unir (mesclar) tabela Ae tabela Bna coluna ID. Devido à situação descrita acima, perco muitas linhas, pois, por exemplo, IDos valores de "042" e "42" não coincidem, pois estão sendo tratados como texto.

Gostaria de adicionar uma etapa aplicada à minha consulta que remove zeros à esquerda de IDvalores numéricos.

Eu tentei mudar o tipo de IDpara Whole Numbere de volta para Text. Isso remove os zeros à esquerda em IDvalores numéricos, mas produz erros em valores não numéricos ID.

Existe uma maneira no Editor do Power Query de remover zeros à esquerda de valores numéricos armazenados como Text?

Ou existe uma maneira melhor de abordar isso completamente?

microsoft-excel
  • 2 respostas
  • 30 Views
Martin Hope
Dave
Asked: 2023-06-27 19:52:36 +0800 CST

Excel (Microsoft 365): INNER JOIN de duas tabelas na mesma pasta de trabalho

  • 5

Estou usando o Excel (Microsoft 365) e tenho duas tabelas com estrutura idêntica, cada uma em sua própria planilha. Essas duas planilhas estão na mesma pasta de trabalho. A primeira planilha e a tabela que ela contém são nomeadas Table_A. A segunda planilha e a tabela que ela contém são nomeadas Table_B. Ambas as tabelas possuem campos Field_A, Field_B, Field_C. Dentro de cada tabela, Field_Atem um valor único para cada linha (ou seja, pode ser considerada uma chave primária na linguagem do banco de dados).

Eu tenho uma terceira planilha chamada Join. Esta planilha está na mesma pasta de trabalho das duas primeiras planilhas descritas acima. Nesta planilha, gostaria de criar uma tabela nomeada Joinque seja preenchida com os dados que obteria com a seguinte instrução T-SQL se estivesse usando o SQL Server em vez do Excel:

SELECT Table_A.Field_A, Table_A.Field_B, Table_B.Field_B, Table_A.Field_C, Table_B.Field_C
FROM Table_A INNER JOIN Table_B
ON Table_A.Field_A = Table_B.Field_A;

Como posso fazer isso na minha pasta de trabalho do Excel? Observe que, como tudo isso é autocontido em uma única pasta de trabalho, gostaria de evitar quaisquer referências de nome de arquivo como fontes de dados.

microsoft-excel
  • 1 respostas
  • 22 Views
Martin Hope
Dave
Asked: 2022-11-17 10:57:40 +0800 CST

Combinando linhas no Excel para as quais um subconjunto especificado de colunas é igual

  • 5

Tenho uma planilha do Excel disposta da seguinte forma:

Nome do Software Versão do software Está no host1? Está no host2? Está no host3?
app1 1,0 Sim
app1 1,0 Sim
app1 1.1 Sim
app2 3.7.8 Sim

Para cada linha acima, exatamente um dos "Is on host1?" , "Está no host2" , "Está no host3" será "Sim" .

Em outra planilha, gostaria de gerar o seguinte a partir do que foi mostrado acima:

Nome do Software Versão do software Está no host1? Está no host2? Está no host3?
app1 1,0 Sim Sim
app1 1.1 Sim
app2 3.7.8 Sim

Para declarar isso em palavras, gostaria que a combinação de colunas (nome do software, versão do software) fosse exclusiva para cada linha (ou seja, uma chave primária no banco de dados) e, em seguida, pudesse examinar as colunas restantes para ver qual hosts têm este software/versão.

Além de fazer isso manualmente no VBA, alguma funcionalidade interna do Excel fará isso?

(Como um aparte, estou lidando com uma situação pontual que envolve exatamente três hosts. Dado isso, não preciso abordar a questão da normalização do banco de dados e dividir uma tabela "Hosts".)

microsoft-excel
  • 1 respostas
  • 21 Views
Martin Hope
Dave
Asked: 2022-01-20 12:46:36 +0800 CST

Sessões SSH do Rocky Linux 8 expirando

  • 5

Estou me conectando via SSH do PuTTY em execução no Windows 10 a um servidor OpenSSH no Rocky Linux 8. Estou usando o shell Bash . Essas sessões são encerradas após um período de inatividade. Não medi o tempo limite, mas parece ser da ordem de um pequeno número de horas. Estou tentando entender como essas sessões estão sendo encerradas. Vou explicar abaixo as causas potenciais que eu descartei.

sshd_config ClientAliveInterval

/etc/ssh/sshd_config foi ClientAliveIntervaldefinido como 0 .

Variável de ambiente Bash TMOUT

Eu procurei TMOUTem todos os arquivos regulares em todo o sistema de arquivos. Essa variável de ambiente não está definida em nenhum lugar.

Infraestrutura de rede

Ocorreu-me que talvez um firewall entre meu cliente e servidor possa estar monitorando conexões e fechando ativamente (via TCP FIN , talvez) aquelas que estão ociosas há algum tempo. Eu descartei essa possibilidade observando que as sessões do mesmo host Windows para outros hosts Linux (não Rocky 8) não fecham. Esses outros hosts estão atrás do mesmo firewall que o host Rocky 8 problemático e também possuem ClientAliveIntervale são TMOUTconfigurados conforme descrito acima.

Peça ajuda

Que outros mecanismos podem estar fechando as sessões devido à inatividade?

Agradeço antecipadamente.

linux bash
  • 1 respostas
  • 567 Views
Martin Hope
Dave
Asked: 2021-04-06 15:57:16 +0800 CST

Restaurando o repositório Git local da cópia remota sem afetar o diretório de trabalho

  • 5

Eu tenho um repositório Git local do qual mantenho uma cópia de backup da seguinte maneira:

cd /path/to/local/repo
git init
git add -A
git commit -m "Initial commit"
git clone --bare /path/to/repo_backup/my_repo.git
cd /path/to/repo_backup/my_repo.git
git init --bare --shared
cd /path/to/local/repo
git remote add origin /path/to/repo_backup/my_repo.git
git push --set-upstream origin master

Enquanto estive fora por duas semanas, nosso departamento de TI decidiu unilateralmente excluir o diretório .git que era meu repositório local. As alterações foram feitas no diretório de trabalho e não consigo executar o git status para ver quais alterações foram feitas.

Eu preciso restaurar o repositório local do repositório de backup (ou seja, remoto) sem afetar o diretório de trabalho (ou seja, não posso fazer um clone git direto ).

Eu tentei isso via:

cp /path/to/repo_backup/my_repo.git /path/to/local/repo/.git
cd /path/to/local/repo

No entanto, quando executo git status , recebo este erro:

fatal: this operation must be run in a work tree

Como posso restaurar corretamente o repositório local sem afetar o diretório de trabalho?

git linux
  • 2 respostas
  • 135 Views
Martin Hope
Dave
Asked: 2020-11-17 15:51:26 +0800 CST

Ligação de servidores DNS a interfaces

  • 5

Estou deliberadamente deixando minha plataforma não especificada para esta pergunta, embora eu diga que minhas "plataformas de interesse" são Linux e Windows 10.

Suponha que eu tenha N NICs. Cada um está conectado a redes separadas, uma das quais fornece acesso à Internet por meio de um gateway padrão. As outras redes são todas privadas e não têm caminho para a Internet ou entre si. Todas as redes usam espaço de endereço RFC 1918. O host não está configurado para rotear entre as redes.

Cada rede privada tem um nome de domínio exclusivo associado a ela e executa seus próprios servidores DNS autoritativos privados para fornecer registros DNS para esse nome de domínio exclusivo. Esses nomes não fazem parte do DNS global. (Eu garanto isso tornando-os subdomínios de um domínio que registrei e para o qual executo servidores DNS públicos autoritativos que não servem registros para os subdomínios mencionados.)

Suponha que os números de rede e os nomes de domínio associados sejam os seguintes:

  • meu-único-subdomínio-1.meu-domínio-único.com
    • Os hosts residem em 10.0.1.0/24
    • Meu host tem endereço IP 10.0.1.1 na interface eth1
    • Os servidores DNS estão em 10.0.1.253 e 10.0.1.254
  • meu-único-subdomínio-2.meu-domínio-único.com
    • Os hosts residem em 10.0.2.0/24
    • Meu host tem endereço IP 10.0.2.1 na interface eth2
    • Os servidores DNS estão em 10.0.2.253 e 10.0.2.254
  • ...
  • meu-unique-subdomain-N.meu-unique-domain.com
    • Os hosts residem em 10.0.N.0/24
    • Meu host tem endereço IP 10.0.N.1 na interface ethN
    • Os servidores DNS estão em 10.0.N.253 e 10.0.N.254

Conforme mostrado acima, meu host possui dois servidores DNS (primário e secundário) associados a cada interface. Estes podem ser atribuídos via DHCP ou manualmente; realmente não importa. Os servidores DNS do meu ISP serão associados à interface de rede através da qual a Internet pode ser acessada. Meus servidores DNS privados para as redes privadas serão associados às outras interfaces de rede.

Estou tendo dificuldade em entender como meu host pode saber qual servidor DNS usar para resolver um determinado nome de domínio. Qualquer FQDN que esteja realmente definido pode ser resolvido em exatamente uma interface de rede --- por meio do servidor DNS privado apropriado ou, se nenhum se aplicar, por meio de um servidor DNS público. Para saber qual servidor DNS usar, o host precisa saber em qual número de rede o host que está sendo consultado reside, mas para saber isso, ele precisa primeiro fazer uma consulta DNS! Parece haver um problema de galinha e ovo aqui.

Suponha que eu queira resolver foo.my-unique-subdomain-3.my-unique-domain.com . Como meu host determina que ele precisa enviar a consulta ao servidor DNS em 10.0.3.253 ou 10.0.3.254 ?

windows-10 linux
  • 1 respostas
  • 633 Views
Martin Hope
Dave
Asked: 2020-07-09 07:16:44 +0800 CST

Obtendo a contagem de dias até a expiração da senha do usuário local no Linux Bash Script

  • 6

Estou usando o RHEL 6.9.

Como posso obter, em um script Bash, a contagem de dias até a expiração da senha de um usuário local?

Eu tentei:

chage -l <username>
passwd -S <username>

Nenhuma delas fornece uma resposta direta.

O primeiro fornece uma sequência de data de expiração formatada como "29 de setembro de 2019".

O último fornece uma string de data, representando a data em que a senha foi definida pela última vez (formatada como acima) e também fornece o número de dias em que a senha é válida.

Com análise difícil (bem, difícil em um script Bash), qualquer um pode ser usado para derivar o número de dias até a expiração da senha. Espero que haja uma maneira de obter diretamente o número de dias até a expiração da senha.

Alguém da comunidade sabe como posso fazer isso?

Obrigado, Dave

linux bash
  • 1 respostas
  • 435 Views
Martin Hope
Dave
Asked: 2020-05-15 09:16:00 +0800 CST

yum: identificando pacotes em que o lançamento da versão instalada é mais recente que o lançamento da versão do Repo

  • 6

Eu gerencio meus sistemas RHEL 6/7 com yum apontado para um repositório local que é uma réplica do repositório oficial da Red Hat.

Outras pessoas instalaram versões mais recentes de alguns pacotes da seguinte forma:

rpm -i <package name>-<newer version>-<release number of newer version>.rpm

Eu preferiria que eles me dessem o .rpm porque assim eu poderia colocá-lo em meu repositório, executar createrepo para reconstruir o repositório com a versão mais recente do pacote e, em seguida, atualizar o pacote da seguinte maneira:

yum update <package name>

Como posso identificar pacotes instalados para os quais a versão do pacote instalado é mais recente que a versão no meu repositório?

Observe que isso é o oposto de yum update , que identifica os pacotes instalados para os quais a versão do pacote instalado é mais antiga que a versão do meu repositório.

linux redhat-enterprise-linux
  • 1 respostas
  • 286 Views
Martin Hope
Dave
Asked: 2020-03-14 22:20:26 +0800 CST

Restringindo o acesso a arquivos quando as permissões padrão do Linux não forem suficientes

  • 5

Eu administro vários sistemas RHEL 6.9. Em cada sistema, um diretório específico, chame-o de /app_dir , é o nível superior onde os scripts, executáveis, arquivos de configuração e logs do nosso projeto são armazenados. A árvore sob esse diretório de nível superior é ampla e profunda. Todos os arquivos e subdiretórios em /app_dir pertencem ao usuário user1 e têm participação no grupo group1 . Os usuários humanos sempre executam como user1 e o grupo primário de user1 é group1 .

Alguns sistemas são para os membros da equipe de fabricação testarem os widgets de hardware que produzimos antes da entrega a um cliente, e alguns sistemas são para o desenvolvimento do software usado para testar os widgets de hardware.

Todos os usuários humanos efetuam login em um desktop GNOME como user1 . Nosso aplicativo principal (GUI) é executado abrindo um terminal e iniciando o aplicativo a partir da linha de comando.

Os sistemas de fabricação precisam permanecer em um estado primitivo. No entanto, por vários motivos, os desenvolvedores alteram um script ou arquivo de configuração para testar algo em um sistema de fabricação e esquecem de reverter a alteração. Um problema clássico.

Então, quando um membro da equipe de produção usar o sistema, ele não funcionará, dará um passe falso (este é o pior caso porque nos faz entregar um widget de hardware com defeito) ou dará um falso falhar (causando perda de receita por não entregar um widget de hardware que era, de fato, adequado para entrega).

Portanto, preciso encontrar uma maneira de bloquear (ou seja, tornar legíveis, mas não graváveis) os scripts e arquivos de configuração em nossa estrutura de diretórios para que, com algumas exceções bem definidas, eles não possam ser alterados, exceto por um lead que tenha privilégios especiais. As permissões padrão do Linux são inadequadas, pois, dado o que está descrito no primeiro parágrafo deste post, elas permitem que qualquer usuário humano (que sempre roda como user1 ) altere qualquer arquivo à vontade.

Neste ponto do nosso ciclo de vida, infelizmente não temos flexibilidade para mudar muito em termos de estrutura de diretórios, usuários, grupos, etc.

Estou pensando que o SELinux fornecerá uma solução.

A situação real é muito mais complexa, mas como exemplo, considere esta estrutura de diretórios:

/app_dir/bin/
/app_dir/bin/widget_tester
/app/dir/bin/<other executables>

/app_dir/config/
/app_dir/config/widget_info.txt
/app_dir/config/test_tolerances.txt
/app_dir/config/<other configuration files>

/app_dir/scripts/
/app_dir/scripts/script_1.py
/app_dir/scripts/script_2.sh
/app_dir/scripts/<other scripts>

/app_dir/logs/
/app_dir/logs/<log files>

/app_dir/bin/ , e tudo abaixo dele, deve ser bloqueado sem exceções.

/app_dir/config/ , e tudo abaixo dele, deve ser bloqueado com exceção de widget_info.txt . Um membro da equipe de fabricação precisa ser capaz de fornecer informações sobre o widget de hardware que está prestes a ser testado.

/app_dir/scripts/ , e tudo abaixo dele, deve ser bloqueado com exceção de script_1.py .

/app_dir/logs/ , e tudo abaixo dele, deve ser gravável por nossos executáveis ​​e scripts, mas para humanos (ou seja , user1 ), deve ser apenas legível.

O SELinux é a ferramenta certa para este trabalho? Em caso afirmativo, os tipos/imposição de tipo são o mecanismo a ser usado? se não para nenhum dos dois, onde mais eu focaria melhor meus esforços de aprendizado?

ATUALIZAÇÃO 1

Observe que a configuração que descrevi para que todos os humanos sejam executados como usuário1 é anterior à minha chegada ao projeto em, literalmente, anos. Eu entendo que ele tem suas deficiências (mas na verdade existem razões válidas para isso que não preciso entrar aqui). Esta é uma operação de fabricação do mundo real. Uma reestruturação do nosso setup é totalmente inviável do ponto de vista do negócio. Não seria permitido pela administração.

Aponto isso para enfatizar que não estou solicitando uma crítica de nossa configuração atual. Estou tentando descobrir com especialistas da comunidade que sabem mais sobre o SELinux do que eu se estou latindo na árvore certa ou errada gastando meus esforços aprendendo sobre o SELinux. Também estou solicitando ponteiros para outros mecanismos do Linux que talvez não conheça e que possam resolver esse problema. (ou seja, embora meu foco atual seja o SELinux, não quero necessariamente limitar a discussão ao SELinux.)

linux redhat-enterprise-linux
  • 2 respostas
  • 126 Views

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