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 / 78693461
Accepted
Michi
Michi
Asked: 2024-07-02 01:05:16 +0800 CST2024-07-02 01:05:16 +0800 CST 2024-07-02 01:05:16 +0800 CST

XLOOKUP com coluna flexível para return_array e lookup_array

  • 772
0 A B C D E F G H EU J. K eu M
1 Produtos Comprar 2023-S 2023-M 2024-S 2024-M
2 lookup_array
3 Produto A Loja3 80 2% 120 22% 2024-S
4 Produto B Loja1 320 17% 400 15% matriz_retorno
5 Produto B Loja3 90 30% 750 8% dados selecionados 2024-M
6 Produto B Loja2 500 4% 70 4% 400 15%
7 Produto C Loja2 160 10% 245 10% 400 35%
8 Produto D Loja1 500 8% 130 4% 70 4%
9 Produto D Loja4 130 11% 130 4% 520 42%
10 Produto E Loja2 75 8% 650 15% 130 4%
11 Produto E Loja1 60 47% 90 7% 90 7%
12 Produto E Loja4 500 25% 400 35% 130 4%
13 Produto E Loja3 350 9% 140 13% 130 9%
14 Produto F Loja2 60 30% 130 9% 70 16%
15 Produto G Loja2 90 5% 370 12%
16 Produto H Loja1 390 27% 70 16%
17 Produto H Loja2 70 18% 520 42%

Quero Range M6:M14obter os dados correspondentes com base nos valores em Range K6:14.
No entanto, quero ter a flexibilidade que

  1. the lookup_arrayé usado com base na entrada Cell M3e
  2. the return_arrayé usado com base na entrada em Cell M5. Por exemplo, se eu mudar de 2024-Mpara Product, os produtos correspondentes Column Adeverão ser listados.

Com referência à resposta nesta pergunta , estou procurando algo assim:

=LET(
     _A, K6:K14,
     _B, >> flexible based on input in Cell M3 <<,
     _RollingA, MAP(_A,LAMBDA(α,COUNTIF(α:K6,α))),
     _RollingB, MAP(_B,LAMBDA(α,COUNTIF(α:H3,α))),
     XLOOKUP(_A&"|"&_RollingA,_B&"|"&_RollingB,XLOOKUP(M5,A1:I1,A3:I17)))

Nota:
Os valores em lookup_arraynão são exclusivos. Neste exemplo 130, 400e 70. Portanto, caso a frequência dos valores em Range K6:14não corresponda à frequência dos valores em return_arrayentão, Range M6:M14eles deverão ser comparados aos valores em Range K6:14em ordem decrescente. (A fórmula de exemplo acima já trata dessa forma).


Qual fórmula eu preciso para obter o resultado no Range M6:M14trabalho com base em um processo flexível lookup_arraye return_array?

excel
  • 2 2 respostas
  • 30 Views

2 respostas

  • Voted
  1. Best Answer
    Mayukh Bhattacharya
    2024-07-02T01:37:32+08:002024-07-02T01:37:32+08:00

    A solução já está na resposta postada por JvdV Sir,

    insira a descrição da imagem aqui


    • Fórmula usada na célulaM6

    =LET(
         _A, K6:K14,
         _B, A1:I1,
         _C, A3:I17,
         _D, XLOOKUP(M3,_B,_C,""),
         MAP(_A,LAMBDA(α, @DROP(TOCOL(FILTER(IFS(_D=α,_C),N5=_B),3),
         COUNTIF(K6:α,α)-1))))
    

    E isso usando a fórmula existente no contexto do OP, com uma ligeira modificação:

    =LET(
         _A, K6:K14,
         _B, A1:I1,
         _C, A3:I17,
         _D, XLOOKUP(M3,_B,_C,""),
         _RollingA, MAP(_A,LAMBDA(α,COUNTIF(α:K6,α))),
         _RollingD, MAP(_D,LAMBDA(α,LET(δ, INDEX(_D,1), SUM(N(δ:α=α))))),
         XLOOKUP(_A&"|"&_RollingA,_D&"|"&_RollingD,XLOOKUP(M5,_B,_C)))
    

    Ou, um pouco semelhante ao acima, mas mais curto e executando personalizadoLAMBDA()

    =LET(
         _A, K6:K14,
         _B, A1:I1,
         _C, A3:I17,
         _D, XLOOKUP(M3,_B,_C,""),
         _Fx, LAMBDA(α,δ, MAP(α, LAMBDA(ε, SUM(N(δ:ε=ε))))),
         XLOOKUP(_A&"|"&_Fx(_A,K6),_D&"|"&_Fx(_D,INDEX(_D,1)),
         XLOOKUP(M5,_B,_C)))
    

    • 0
  2. nkalvi
    2024-07-02T02:12:57+08:002024-07-02T02:12:57+08:00

    Adotando da resposta anterior :

    =LAMBDA(k_, data_range, col_headers, header_for_lookup, header_for_return,
        LET(
            h_, INDEX(data_range, , XMATCH(header_for_lookup, col_headers)),
            i_, INDEX(data_range, , XMATCH(header_for_return, col_headers)),
            freq, LAMBDA(arr,
                LET(
                    indices, SEQUENCE(ROWS(arr)),
                    MAP(indices, LAMBDA(i, SUM(IF(TAKE(arr, i) = INDEX(arr, i, ), 1, 0))))
                )
            ),
            h_freq, h_ & " " & freq(h_),
            k_freq, k_ & " " & freq(k_),
            xlook, XLOOKUP(k_freq, h_freq, i_),
            formatted, IF(RIGHT(header_for_return, 2) = "-M", TEXT(xlook, "0%"), xlook),
            formatted
        )
    )(K6:K14, A3:I17, A1:I1, M3, M5)
    
    • 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