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-4934150

Michi's questions

Martin Hope
Michi
Asked: 2025-04-09 16:48:16 +0800 CST

Transpor valores de linha para coluna e calcular a diferença entre os valores

  • 4
0 UM B C D E F G H EU
1 Q1 Q2 3º trimestre 4º trimestre Q5
2 Produto 100 400 600 200 900
3 Produto
4 Q1 100
5 Q2 300
6 3º trimestre 200
7 4º trimestre -400
8 Q5 700

Quero Range H3:I8transpor os valores de Range A1:F2.
Para a transposição, uso esta fórmula TRANSPOSE(A1:F2).

Entretanto, não sei como incluir o cálculo da diferença entre os números na Range B2:F2seguinte fórmula de transposição:

I4 = 100 - 0 = 100
I5 = 400-100 = 300
I6 = 600-400 = 200
I7 = 200-600 = -400
I8 = 900-200 = 700

Você tem alguma ideia?

Nota: Sempre haverá exatamente uma linha para transpor.

excel
  • 1 respostas
  • 55 Views
Martin Hope
Michi
Asked: 2025-04-02 15:26:35 +0800 CST

Exibir apenas o valor mais recente disponível por cliente com base em uma determinada data [duplicado]

  • 8
Esta pergunta já tem respostas aqui :
Selecione a primeira linha em cada grupo GROUP BY? (21 respostas)
Fechado há 2 dias .

DB-Violino

CREATE TABLE vouchers (
    id SERIAL PRIMARY KEY,
    customer VARCHAR,
    collected_date DATE,
    balance INT
);

INSERT INTO vouchers
(customer, collected_date, balance
)
VALUES 
('customer_a', '2024-03-09', '1600'),
('customer_a', '2024-04-20', '2700'),
('customer_a', '2024-05-24', '3100'),
('customer_a', '2025-03-09', '1500'),
('customer_a', '2025-04-20', '400'),
('customer_a', '2025-05-24', '0'),
('customer_b', '2024-10-17', '200'),
('customer_b', '2025-02-15', '1000'),
('customer_b', '2025-10-17', '800'),
('customer_b', '2025-11-18', '950'),
('customer_b', '2026-02-15', '1150'),  
('customer_b', '2026-11-18', '0');

Resultado esperado:

cliente data_selecionada equilíbrio
cliente_a 2025-03-31 1500
cliente_b 2025-03-31 1000

No resultado esperado, quero exibir apenas o mais recente disponível balancepor customercom base em uma determinada data.
Neste exemplo 2025-03-31.

Até agora consegui desenvolver esta consulta:

select
    customer as customer,
    collected_date as collected_date,
    sum(balance) as balance,
    max(collected_date) over (partition by customer) AS max_date
from vouchers
where collected_date < '2025-03-31' 
group by 1, 2
order by 1, 2 desc;

Ele quase me leva ao resultado correto. No entanto, não consegui fazê-lo funcionar completamente.
O que preciso mudar para obter o resultado esperado?

sql
  • 2 respostas
  • 52 Views
Martin Hope
Michi
Asked: 2025-03-31 21:59:03 +0800 CST

Inserir data calculada - como uma nova linha - abaixo de outra data e não em uma coluna separada

  • 8

Fiddle de DB

CREATE TABLE vouchers (
    id SERIAL PRIMARY KEY,
    collected_date DATE,
    collected_volume INT
);

INSERT INTO vouchers
(collected_date, collected_volume
)
VALUES 
('2024-03-09', '900'),
('2024-04-20', '300'),
('2024-04-20', '800'),
('2024-05-24', '400'),
('2025-01-17', '200'),
('2025-02-15', '800'),
('2025-02-15', '150');

Resultado Esperado

data_coletada volume_coletado
2025-03-09 900
2024-03-09 -900
2025-04-20 1100
2024-04-20 -1100
2025-05-24 400
2025-05-24 -400
2026-01-17 200
2025-01-17 -200
2026-02-15 950
2026-02-15 -950

Para ir dos dados brutos aos resultados esperados, são necessárias estas etapas:

Etapa 1: Calcule um expire_dateque é sempre 12 meses após a collected_date
Etapa 2: Coloque o expire_datena linha abaixo do collected_date. Não em uma coluna separada!
Etapa 3: Coloque o total collected_volumepor collected_datecomo um número negativo na linha com o expire_date.


Até agora consegui desenvolver esta consulta:

select
collected_date as collected_date,
(collected_date + interval '12 months')::date as expire_date,
sum(collected_volume) as collected_volume
from vouchers
group by 1,2
order by 1,2;

No entanto, não tenho ideia do que preciso mudar para exibir expire_datecada um abaixo collected_datee não em uma coluna separada.

Você tem alguma ideia de como resolver isso?

sql
  • 2 respostas
  • 30 Views
Martin Hope
Michi
Asked: 2024-12-27 20:28:59 +0800 CST

Classificar somente a lista filtrada dentro de um valor de outra coluna (semelhante à partição por função em SQL)

  • 5
0 UM B C E E F G
1 data companhia aérea avião Filtro A-319
2 2022-09-15 Companhia aérea_A B-787
3 2021-03-27 Companhia aérea_A A-319
4 2023-12-26 Companhia aérea_A A-319 Resultado esperado:
5 2024-09-30 Companhia aérea_B B-787 2021-03-27 Companhia aérea_A A-319
6 2023-09-25 Companhia aérea_B A-319 2023-12-26 Companhia aérea_A A-319
7 2025-01-02 Companhia aérea_B A-319 2021-08-12 Companhia aérea_B A-319
8 2021-08-12 Companhia aérea_B A-319 2023-09-25 Companhia aérea_B A-319
9 2020-04-20 Companhia aérea_C B-787 2025-01-02 Companhia aérea_B A-319
10 2019-02-02 Companhia aérea_C A-319 2019-02-02 Companhia aérea_C A-319
11 2021-08-09 Companhia aérea_C A-319 2021-08-09 Companhia aérea_C A-319
12 2024-07-25 Companhia aérea_C A-319 2022-04-03 Companhia aérea_C A-319
13 2022-04-03 Companhia aérea_C A-319 2024-07-25 Companhia aérea_C A-319

Em Range E5:G13Eu quero filtrar os dados de Column A:Ccom base no filtro em Cell F1e - como um primeiro passo - classificá-los por Column B.
Portanto, implementei esta fórmula em Cell E5:

=LET(
a;FILTER(A:C;(C:C=F1));
b;SORT(a;2;1);
b)

Tudo isso funciona bem.


Agora - como um segundo passo - eu quero classificar a lista filtrada em ordem crescente com base no date.
No entanto, essa classificação deve ser aplicada somente dentro dos valores de Column B.
No exemplo, isso significa que a classificação do airlinedeve permanecer como está e dentro do airlineo datedeve ser listado em ordem crescente. Os resultados esperados em Range E5:G13exibem como ele deve ficar.
Em SQL, esse tópico é resolvido com a PARTITION BYfunção.

=LET(
a;FILTER(A:C;(C:C=F1));
b;SORT(a;2;1);
c;SORT(b;1;1);
c)

Como preciso alterar a cparte na fórmula do Excel para que ela funcione?

excel
  • 1 respostas
  • 38 Views
Martin Hope
Michi
Asked: 2024-12-24 16:16:19 +0800 CST

Somar valores por linha filtrada exclusiva (se a função GROUPBY ainda não estiver disponível)

  • 7
0 UM B C E E F
1 Lista de dados Filtro
2 data produção valor. 2022-12-31
3 2022-05-10 P1 15
4 2023-01-15 P1 18
5 2022-08-12 P2 30
6 2022-09-15 P3 50 Resultado
7 2023-06-15 P3 20 produção valor.
8 2023-06-18 P1 80 P1 15
9 2024-05-17 P4 25 P2 225
10 2023-08-19 P5 85 P3 60
11 2022-09-30 P3 70
12 2024-04-25 P3 32
13 2025-08-29 P1 45
14 2022-03-25 P2 60
15 2022-03-26 P2 85
16 2024-05-20 P3 90
17 2024-06-03 P4 15
18 2024-07-30 P4 26

Implementei Cell E8a fórmula abaixo para filtrar Columns A:Ccom base nos critérios em Cell E2.

=LET(
a,FILTER(A2:C18,A2:A18<=E2),
b,CHOOSECOLS(a,2),
c,CHOOSECOLS(a,3),
d,HSTACK(b,c),
d)

Tudo isso funciona bem.


No entanto, a questão é que

  1. não prod.são listados como únicos e
  2. o val.não se resume a cada um únicoprod.

O primeiro problema é fácil de resolver com UNIQUEa função, mas não tenho a mínima ideia de como resolver o segundo problema com a soma.
Sei que na versão mais recente do Excel há uma GROUPBYfunção que resolve esse problema.
No entanto, ainda não tenho essa função disponível no meu Excel. Estou usando o Office365 (versão 2410).

Você conhece alguma maneira alternativa de fazer isso funcionar?

excel
  • 1 respostas
  • 38 Views
Martin Hope
Michi
Asked: 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

  • 5
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 respostas
  • 49 Views
Martin Hope
Michi
Asked: 2024-11-26 23:25:27 +0800 CST

Mapear valores de uma lista para uma lista filtrada

  • 6
0 UM B C E E F G
1 Marca A Produto 01 600 Produto 01 NÓS on-line
2 Marca A Produto 02 100 Produto 02 Inglês: loja local
3 Marca A Produto 02 300 Produto 03 NO on-line
4 Marca B Produto 01 400 Produto 04 FR loja local
5 Marca B Produto 03 500
6 Marca C Produto 02 200
7 Marca C Produto 02 800 Marca C
8 Marca C Produto 04 900 Produto 02 Inglês: loja local
9 Marca C Produto 01 700 Produto 04 FR loja local
10 Marca D Produto 03 250 Produto 01 NÓS on-line
11 Marca D Produto 03 460
12 Marca D Produto 04 690

Na tabela acima tenho duas listas diferentes:

Lista A = Range A1:C12
Lista B = Range E1:G4 (Info: Os produtos desta lista serão sempre únicos)

No é Range E8:E10filtrado List Acom esta fórmula:

=UNIQUE(FILTER(B:B;A:A=E7))

Tudo isso funciona.


Agora, Range F8:G10quero adicionar informações adicionais aos produtos filtrados da Lista B.
Até agora, consegui fazer isso para a primeira linha com esta fórmula:

=DROP(FILTER(E1:G4;E1:E4=E8);;1)

Como preciso alterar a(s) fórmula(s) para que funcione(m) em todas as linhas?

excel
  • 2 respostas
  • 44 Views
Martin Hope
Michi
Asked: 2024-11-26 17:44:36 +0800 CST

SUMIF em duas matrizes da função FILTER

  • 7
0 UM B C E E F G E EU Eu E eu
1 Marca A Produto 01 600 Marca A Produto 01 370 Marca C
2 Marca A Produto 02 100 Marca C Produto 02 650
3 Marca A Produto 02 300 Marca C Produto 01 390 Produto 02 200 Produto 02 650
4 Marca B Produto 01 400 Produto 02 800 Produto 01 390
5 Marca B Produto 03 500 Produto 04 900
6 Marca C Produto 02 200 Produto 01 700
7 Marca C Produto 02 800
8 Marca C Produto 04 900
9 Marca C Produto 01 700 Produto 02 350
10 Marca D Produto 03 250 Produto 04 900
11 Marca D Produto 03 460 Produto 01 310
12 Marca D Produto 04 690

Na tabela acima tenho duas listas diferentes:

Lista A Column A:C
Lista BColumn E:G

E Range I3:J6eu Range K3:L4filtro essas duas listas com base nos critérios Cell I1usando as seguintes fórmulas:

Cell I3 =CHOOSECOLS(FILTER(A1:C12,A1:A12=I1),2,3) 
Cell K3 =CHOOSECOLS(FILTER(E1:G12,E1:E12=I1),2,3)

Tudo isso funciona bem.


Agora meu alvo é a lista em Range I9:J11.
A lista exibe exclusivamente todos os produtos da lista filtrada A em Range I3:J6e subtrai os valores correspondentes por produto da lista filtrada B em Range K3:L4.

Eu sei que poderia fazer isso aplicando a UNIQUEfunção e a SUMIFfunção nos resultados existentes em Range I3:J6e Range K3:L4.

No entanto, eu preferiria ter uma solução na qual eu não precisasse de Range I3:J6e Range K3:L4.
Em vez disso, a lista em Range I9:J11deveria ser exibida sem os "helper ranges".

Você tem alguma ideia de como conseguir isso?


Observação:

  1. List Bnunca conterá valores que não existam em List A. Nem para marca nem para produto.

  2. List Btambém pode conter várias vezes o mesmo produto por marca. Nem sempre é único. Por exemplo, pode acontecer que Product 02apareça x vezes por Brand C.

excel
  • 4 respostas
  • 80 Views
Martin Hope
Michi
Asked: 2024-10-08 17:27:12 +0800 CST

Transpor com intervalo flexível com base na entrada em uma célula

  • 8
0 UM B C E E F G
1 Q1 Q2 3º trimestre 4º trimestre Produto A
2 Produto A 500 900 100
3 Produto B 600 400 500
4 Produto C 100 350 785 900
5 Produto D 230 600 210 690 100
6 Produto E 310 900 480 125
7

Quero Range G3:G6transpor os valores com base nos critérios de linha inseridos em Cell G1.
(Observação: os produtos listados em Column Asão sempre exclusivos.)

Neste exemplo, o Row B2:E2for Product Aé transposto e exibido em Range G3:G6.

Até agora consegui desenvolver esta fórmula:

=LET(
a,TRANSPOSE(B2:E2),
IFERROR(INDEX(FILTER(a,a<>0),SEQUENCE(4,,1)),""))

Esta fórmula funciona.
No entanto, não tenho a mínima ideia de como tornar o Range B2:E2nesta fórmula flexível para que ele mude com base na entrada em Cell G1.

Você tem alguma ideia de como modificá-lo para que funcione?

excel
  • 6 respostas
  • 89 Views
Martin Hope
Michi
Asked: 2024-09-18 15:14:19 +0800 CST

Aplicar a fórmula FILTER à matriz (e usar critérios de filtro em uma coluna específica na matriz)

  • 5
0 UM B C
1 Projeto A 500
2 Projeto B 200
3 Projeto B 600
4 Projeto C 300
5 Projeto D 100
6
7 Projeto A 500
8 Projeto B 200
9 Projeto B 600
10 Projeto C 300
11 Projeto D 100

Criei Range A7:B11uma matriz usando esta fórmula:

=HSTACK(A1:A5;C1:C5)

Agora, quero aplicar a FILTERfórmula a essa matriz e filtrar apenas os valores que estão =Project Blá, para que no final a lista fique assim:

0 |    A      |  B  |   C  |
--|-----------|-----|------|--
  |           |     |      |
7 | Project B | 200 |      |
8 | Project B | 600 |      | 
9 |           |     |      |

Eu tentei algo assim:

=FILTER(A7#;A7#="Project B")

Ele retorna#VALUE!

Presumo que o problema seja que, de alguma forma, preciso informar à Filterfórmula que o filtro deve ser aplicado à primeira coluna da matriz.

Você sabe como mudar a fórmula para que funcione?

excel
  • 2 respostas
  • 48 Views
Martin Hope
Michi
Asked: 2024-09-13 14:39:19 +0800 CST

Fórmula SORT com coluna vazia no intervalo de dados e ordem decrescente com base em outra coluna (não na primeira coluna no intervalo de dados)

  • 5
0 UM B C
1 Projeto A 500
2 Projeto B 200
3 Projeto C 600
4 Projeto D 300
5 Projeto E 100
6
7 Projeto C 600
8 Projeto A 500
9 Projeto D 300
10 Projeto B 200
11 Projeto E 100

Em Range A7:B11Eu quero classificar os valores Range A1:A5decrescente com base nos valores em Range C1:C5. Portanto, tentei usar esta fórmula:

=SORT(A1:C5;;-1)

Entretanto, quando faço isso o resultado fica assim:

insira a descrição da imagem aqui

Como preciso modificar a SORTfórmula para

  1. obter a lista na ordem decrescente correta com base nos valores em Range C1:C5?
  2. ignorar o vazio Column Bdentro do Range A1:C5e não exibir 0 valores para ele?
excel
  • 2 respostas
  • 21 Views
Martin Hope
Michi
Asked: 2024-07-06 22:32:20 +0800 CST

Exibir linhas x abaixo de uma determinada posição em uma lista filtrada e classificada

  • 7
0 A B
1 100 começar
2 30 8
3 50 linhas
4 60 4
5 60
6 60 30
7 40 30
8 10 10
9 30
10 30

Em Cell B6:B9eu quero

  1. classifique Column Aem ordem decrescente e
  2. exibir sempre o número de linhas inseridas Cell B4a partir da linha inserida em Cell B2.

Até agora consegui desenvolver esta fórmula:

=CHOOSEROWS(SORT(A1:A10,,-1),SEQUENCE(C4,,C2))

Essa fórmula quase me dá o resultado.


No entanto, quando você chegar ao ponto em que não há mais de 4 linhas abaixo do ponto inicial - que é o caso do exemplo acima - a fórmula retornará um erro #VALUE!.

A ideia é que a fórmula neste caso exiba as 3 linhas restantes e apenas recorte a quarta.

Como preciso modificá-lo para que funcione?

excel
  • 2 respostas
  • 32 Views
Martin Hope
Michi
Asked: 2024-07-06 15:06:30 +0800 CST

Obtenha o primeiro e o último número que ocorre em uma string (de texto) em uma célula

  • 6
0 A B C
1 primeiro número último número
2 Principais 1-5 1 5
3 Principais 5-10 5 10
4 Principais 11-15 11 15

Quero Column Bextrair o primeiro número que ocorre nas strings em Column A.
Quero Column Cextrair o último número que ocorre nas strings em Column A.

Tentei aplicar soluções para esta questão , mas elas não funcionaram no meu caso.

Qual fórmula eu preciso para obter os resultados esperados Column Be Column C?

excel
  • 6 respostas
  • 96 Views
Martin Hope
Michi
Asked: 2024-07-05 22:05:15 +0800 CST

Exibir apenas os valores em uma determinada posição de classificação da lista filtrada e classificada

  • 6
0 A B
1 100 60
2 50 50
3 80 40
4 10
5 20
6 70
7 30
8 90
9 40
10 60

Em Column Beu quero

  1. classifique os valores em Column Aordem decrescente e
  2. então exiba apenas os valores na classificação 5,6,7 da ordem decrescente.

Até agora consegui resolver a primeira etapa usando esta fórmula:

=TAKE(SORT(A1:A10;;-1);5)

No entanto, agora tenho ideia de como implementar a segunda etapa. Deveria ser algo assim

=TAKE(SORT(A1:A10;;-1);5-7)

Você sabe qual fórmula preciso mostrar apenas os valores na classificação 5,6,7 ?

NOTA: O 5,6,7 é apenas um exemplo para esta questão.
Seria ótimo ter uma fórmula na qual esse intervalo pudesse ser definido de forma flexível.

excel
  • 3 respostas
  • 53 Views
Martin Hope
Michi
Asked: 2024-07-04 00:46:34 +0800 CST

Obtenha o valor da segunda célula não vazia consecutiva

  • 6
0 A B C D E F G H EU J. K eu
1 produtos 2023-Saels 2023-Margem 2024-Saels 2024-Margem 2025-Vendas 2025-Margem Resultado
2 Produto A 500 30% 150 40% 160 5% 30%
3 Produto B 200 10% 900 60% 750 8% 10%
4 Produto C 300 19% 400 10% 400 60% 19%
5 Produto D 700 50% 930 25% 50%
6 Produto E 800 15% 15%
7 Produto F 430 32% 32%
8 Produto G 360 45% 45%

Quero Column Lexibir para cada produto a primeira margem por produto, que é a segunda célula não vazia em cada linha.

Até agora consegui desenvolver esta fórmula:

=XLOOKUP(TRUE,ISNUMBER(C2:J2),C2:J2)

Isso me dá corretamente as primeiras vendas, que são a primeira célula não vazia em cada linha.
Como preciso modificá-lo para exibir a segunda célula não vazia em cada linha?

excel
  • 3 respostas
  • 37 Views
Martin Hope
Michi
Asked: 2024-07-02 01:05:16 +0800 CST

XLOOKUP com coluna flexível para return_array e lookup_array

  • 5
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 respostas
  • 30 Views
Martin Hope
Michi
Asked: 2024-05-27 16:44:55 +0800 CST

A data definida no parâmetro não corresponde à data ao consultar o parâmetro

  • 5

insira a descrição da imagem aqui


Como você pode ver na captura de tela, defini um parametertipo de dados with datee selecionei a data 2024-05-27.
Porém, quando consulto esse parâmetro no SQL estou obtendo um valor completamente diferente ( 1992-01-01).

Você sabe por que isso acontece e como resolver?

sql
  • 1 respostas
  • 18 Views
Martin Hope
Michi
Asked: 2024-05-26 23:34:05 +0800 CST

Calcule SUMPRODUCT com vários critérios de coluna e critérios de uma linha (com colunas vazias no intervalo de dados)

  • 6
      |   A   |B |C|   D  |E|    F   |   G  |   H  |   I  |J|    K    |     L    |    M     |   
------|-------|--|-|------|-|--------|------|------|------|-|---------|----------|----------|--
    1 |       |  | |ratio | | tested | 2023 | 2024 | 2025 | | RowCrit | ColCrit1 | ColCrit2 |
    2 |Brand A|P1| |  7%  | |   yes  |  500 |   70 |   60 | |   2024  |  Brand A |    P1    |         
    3 |Brand A|P2| |  8%  | |   yes  |  100 |   47 |  300 | |         |  Brand D |    P4    |            
    4 |Brand A|P2| | 10%  | |   yes  |  800 |   21 |  200 | |         |          |          |          
    5 |Brand B|P1| |  5%  | |   yes  |   90 |   56 |  150 | |         |          |          |                     
    6 |Brand C|P4| |  3%  | |   no   |   45 |  700 |  790 | |         |          |          |                  
    7 |Brand C|P2| |  8%  | |   no   |  600 |  150 |   40 | |  Result |    191.5 |          |          
    8 |Brand D|P1| | 12%  | |   yes  |  900 |   90 |  980 | |         |          |          |                    
    9 |Brand D|P1| | 20%  | |   yes  |  125 |  854 |  726 | |         |          |          |          
    10|Brand D|P3| | 19%  | |   yes  |   70 |  860 |  614 | |         |          |          |          
    11|Brand D|P4| |  2%  | |   yes  |  842 |  250 |   85 | |         |          |          |          
    12|Brand E|P4| |  6%  | |   no   |  300 |  324 |  450 | |         |          |          |   
       

Quero calcular SUMPRODUCTmultiplicando os valores de Column Dpelos valores correspondentes em Column G:I.
A SUMPRODUCTfórmula também deve considerar os filtros para Rowin Cell K2e Columnin Range L2:L4e Range M2:M4.

No exemplo acima o resultado é:

L7 = 7%x70 + 12%x90 + 20%x854 + 2%x250 = 191.5

Com referência à resposta nesta pergunta , tentei aplicar esta solução:

=LET(
    a, IF(
        COUNTA($L$2:$L$3) = 0,
        N(ISNUMBER(ROW($A$2:$A$12))),
        COUNTIF($L$2:$L$3, $A$2:$A$12)
    ),
    b, IF(
        COUNTA($M$2:$M$3) = 0,
        N(ISNUMBER(ROW($B$2:$B$12))),
        COUNTIF($M$2:$M$3, $B$2:$B$12)
    ),
    c, CHOOSECOLS($A$2:$I$12, 3, XMATCH($K$2, $A$1:$I$1)),
    SUM(a * b * CHOOSECOLS(c, 1) * CHOOSECOLS(c, 2))
)

No entanto, ele retorna 0como resultado. Pelo que posso dizer, isso é causado pelo vazio Column C.
Presumo que de alguma forma nesta fórmula ela Column Ddeve ser declarada como coluna fixa a ser usada para o arquivo SUMPRODUCT.

Você tem alguma ideia de como alterar a fórmula para que funcione?

excel
  • 2 respostas
  • 44 Views
Martin Hope
Michi
Asked: 2024-05-26 02:04:24 +0800 CST

Usando uma lista (intervalo) de critérios de coluna (não células únicas) na fórmula FILTER

  • 6
   |   A   | B|    C    |D|     E    |     F    |      
---|-------|--|---------|-|----------|----------|-
   |       |  | Revenue | | ColCrit1 | ColCrit2 |
2  |Brand A|P1|    500  | |  Brand A |    P1    |         
3  |Brand A|P2|    100  | |  Brand B |    P3    |            
4  |Brand A|P2|    800  | |  Brand D |          |
5  |Brand B|P1|     90  | |          |          |
6  |Brand C|P4|     45  | |          |          |
7  |Brand C|P2|    600  | |   Result |    500   |
8  |Brand D|P1|    900  | |          |     90   |
9  |Brand D|P1|    125  | |          |    900   |
10 |Brand D|P3|     70  | |          |    125   |
11 |Brand D|P3|    842  | |          |     70   |
12 |Brand E|P4|    300  | |          |    842   |

   

Quero filtrar a lista com base em critérios de várias colunas.
Os critérios da coluna podem ser inseridos pelo usuário em Range E2:E4e Range F2:F4.

Até agora, só consegui criar uma fórmula de filtro em entradas de célula única:

F7 = FILTER(C2:C12,IF(E2="",1,(A2:A12=E2))*IF(F2="",1,(B2:B12=F2)))

Você sabe se existe uma fórmula para aplicar os critérios como um intervalo?
Algo assim:

F7 = FILTER(C2:C12,IF(E2:E4="",1,(A2:A12=E2:E4))*IF(F2:F4="",1,(B2:B12=F2:F4)))
excel
  • 1 respostas
  • 29 Views
Martin Hope
Michi
Asked: 2024-05-26 01:23:07 +0800 CST

Calcule SUMPRODUCT com vários critérios de coluna e critérios de uma linha

  • 6
   |   A   | B|    C  |   D    |   E  |   F  |   G  |H|    I    |     J    |    K     |  L
---|-------|--|-------|--------|------|------|------|-|---------|----------|----------|-----
   |       |  | ratio | tested | 2023 | 2024 | 2025 | | RowCrit | ColCrit1 | ColCrit2 |
2  |Brand A|P1|   7%  |   yes  |  500 |   70 |   60 | |   2023  |  Brand A |    P1    |         
3  |Brand A|P2|   8%  |   yes  |  100 |   47 |  300 | |         |  Brand B |          |            
4  |Brand A|P2|  10%  |   yes  |  800 |   21 |  200 | |         |          |          |          
5  |Brand B|P1|   5%  |   yes  |   90 |   56 |  150 | |         |          |          |                     
6  |Brand C|P4|   3%  |   no   |   45 |  700 |  790 | |         |          |          |                  
7  |Brand C|P2|   8%  |   no   |  600 |  150 |   40 | |  Result |    39.5  |          |          
8  |Brand D|P1|  12%  |   yes  |  900 |   90 |  980 | |         |          |          |                    
9  |Brand D|P1|  20%  |   yes  |  125 |  854 |  726 | |         |          |          |          
10 |Brand D|P3|  19%  |   yes  |   70 |  860 |  614 | |         |          |          |          
11 |Brand D|P3|   2%  |   yes  |  842 |  250 |   85 | |         |          |          |          
12 |Brand E|P4|   6%  |   no   |  300 |  324 |  450 | |         |          |          |   

   

Quero Cell J7calcular SUMPRODUCTcom base em vários critérios de coluna e critérios de uma linha:

  1. Os critérios para a linha que você pode encontrar emCell I2
  2. Os critérios para as colunas você pode encontrar em Range J2:J3e Range K2:K3.

No exemplo acima o resultado é:

J7 = 500x7% + 90x5% = 39.5

Até agora consegui extrair SUMcom base nos critérios usando esta fórmula:

=SUM(IF(COUNTIF(I2;C1:G1)*COUNTIF(J2:J3;A2:A12)*COUNTIF(K2:K3;B2:B12);C2:G12))

Porém, não tenho ideia de como alterar essa fórmula para que ela calcule SUMPRODUCTe inclua todos os critérios tanto para coluna quanto para linha.

excel
  • 3 respostas
  • 78 Views

Sidebar

Stats

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

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

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

    • 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

    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
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +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

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