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 / coding / Perguntas / 79303894
Accepted
Michi
Michi
Asked: 2024-12-24 02:10:12 +0800 CST2024-12-24 02:10:12 +0800 CST 2024-12-24 02:10:12 +0800 CST

Crie uma lista com base em vários critérios de filtro sem limitação de linha na fórmula COUNTIF

  • 772
0 UM B C E E F G E EU
1 Lista de dados Filtro_01 Filtro_02 Filtro_03
2 data marca tipo produção valor. 2023-12-31 Br_B t1
3 2022-05-10 Sutiã t1 P1 15 Br_C t2
4 2023-01-15 Sutiã t1 P1 18 t3
5 2022-08-12 Br_B t2 P2 30
6 2022-09-15 Br_B t3 P3 50 Resultado
7 2023-06-15 Br_B t1 P3 20 produção
8 2023-06-18 Br_B t4 P1 80 P2
9 2024-05-17 Br_B t4 P4 25 P3
10 2023-08-19 Br_C t3 P5 85 P5
11 2022-09-30 Br_C t5 P3 70
12 2024-04-25 Br_C t5 P3 32
13 2025-08-29 Br_D t3 P1 45
14 2022-03-25 Br_E t1 P2 60
15 2022-03-26 Br_E t3 P2 85
16 2024-05-20 Br_E t5 P3 90
17 2024-06-03 Br_E t2 P4 15
18 2024-07-30 Br_E t1 P4 26

Em Cell G8Eu implementei a fórmula abaixo. Ela filtra a lista em Column A:Ecom base nos critérios em Cell G2, em Range H2:H4e Range I2:I4:

=LET(
a,COUNTIF(H2:H4,B1:B20)+AND(H2:H4=""),
b,COUNTIF(I2:I4,C1:C20)+AND(I2:I4=""),
c,FILTER(A1:E20,a*b,""),
d,A2:E2,
e,VSTACK(d,c),
f,MATCH(A2,CHOOSEROWS(e,1),0),
g,FILTER(e,CHOOSECOLS(e,1)<=G2),
h,DROP(UNIQUE(g),1),
i,VSTACK(d,h),
j,XLOOKUP(D2,CHOOSEROWS(i,1),i,NA(),0),
k,DROP(UNIQUE(j),1),
k)

Tudo isso funciona bem.


Agora, estou me perguntando se é possível, de alguma forma, eliminar as limitações de linha na COUNTIFparte da fórmula para que fique assim:

=LET(
a,COUNTIF(H2:H4,B:B)+AND(H2:H4=""),
b,COUNTIF(I2:I4,C:C)+AND(I2:I4=""),
c,FILTER(A:E,a*b,""),
d,A2:E2,
e,VSTACK(d,c),
f,MATCH(A2,CHOOSEROWS(e,1),0),
g,FILTER(e,CHOOSECOLS(e,1)<=G2),
h,DROP(UNIQUE(g),1),
i,VSTACK(d,h),
j,XLOOKUP(D2,CHOOSEROWS(i,1),i,NA(),0),
k,DROP(UNIQUE(j),1),
k)

Entretanto, esta fórmula retorna #VALUE!.


Como preciso modificar a fórmula para que ela funcione?

Nota: Gosto que na fórmula seja muito fácil adicionar filtros adicionais adicionando COUNTIFvariáveis. Portanto, a solução também deve manter essa flexibilidade.

excel
  • 2 2 respostas
  • 49 Views

2 respostas

  • Voted
  1. Best Answer
    Scott Craner
    2024-12-24T03:04:02+08:002024-12-24T03:04:02+08:00

    Gosto de usar ISNUMBER(MATCH(,,0))porque ele aceita matrizes, diferentemente de CONT.SE.

    Usando colunas completas podemos usar a A.:.Dreferência.

    =LET(
        rng,A.:.D,
        f_1,G2,
        f_2,H2:H4,
        f_3,I2:I4,
        _a,CHOOSECOLS(rng,1),
        _b,CHOOSECOLS(rng,2),
        _c,CHOOSECOLS(rng,3),
        _d,CHOOSECOLS(rng,4),
        UNIQUE(FILTER(
            _d,
            (ISNUMBER(MATCH(_a,FILTER(_a,_a<=f_1),0)))*
            (ISNUMBER(MATCH(_b,f_2,0)))*
            (ISNUMBER(MATCH(_c,f_3,0))))))
    

    insira a descrição da imagem aqui


    Se ainda não tivermos as A.:.Dreferências, podemos simplesmente fazer outro filtro:

    =LET(
        rng,A:D,
        f_1,G2,
        f_2,H2:H4,
        f_3,I2:I4,
        flt,FILTER(rng,CHOOSECOLS(rng,1)<>""),
        _a,CHOOSECOLS(flt,1),
        _b,CHOOSECOLS(flt,2),
        _c,CHOOSECOLS(flt,3),
        _d,CHOOSECOLS(flt,4),
        UNIQUE(FILTER(
            _d,
            (ISNUMBER(MATCH(_a,FILTER(_a,_a<=f_1),0)))*
            (ISNUMBER(MATCH(_b,f_2,0)))*
            (ISNUMBER(MATCH(_c,f_3,0))))))
    
    • 1
  2. P.b
    2024-12-24T06:07:20+08:002024-12-24T06:07:20+08:00
    =LET(c,CHOOSECOLS,
         a,FILTER(A:E,ISNUMBER(A:A)),
         x,LAMBDA(y,z,(1-ISNA(XMATCH(c(a,y),z))+AND(z=""))),
    UNIQUE(FILTER(c(a,4),(c(a,1)<=G2)*x(2,H2:H3)*x(3,I2:I4))))
    

    Esta fórmula usa ETA. Onde eu declarei cser CHOOSECOLS, apara ser o filtro de A:E de linhas contendo datas (números) na coluna A, xsendo (1-ISNA(XMATCH(CHOOSECOLS(a,y ),z ))+AND(z=""))onde yé uma entrada numérica para obter a ycoluna th de ae zsendo o intervalo de valores do filtro. Então x(2,H2:H3)significa(1-ISNA(XMATCH(CHOOSECOLS(FILTER(A:E,IS NUMBER(A:A)),2),H2:H3))+AND(H2:JE=""))

    • 0

relate perguntas

  • Como posso retornar linhas específicas onde EXISTE uma taxa no contrato listado, mas NÃO há taxa no sistema?

  • adicionar automaticamente um campo de referência em uma tabela quando alguns valores são repetidos?

  • percorrer a coluna com a alteração do endereço da célula

  • Pesquise uma string e os valores de saída correspondentes a essa string

  • Existe uma maneira no Excel de contar as ocorrências de um texto específico em uma string, mas também incluir o caractere anterior?

Sidebar

Stats

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

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

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