Compare values from two columns and return in 3rd column if there is mach - excel

I need to compare and mach a value from column B to a values from column A.
The criteria I need to fulfil are.
The comparison and mach should be performed for standard timestamps. (Starting point of column A values need to be timestamp of value from column B that need to be looked for. And stop time a month of registers of column A value after start point. Or 50 values of column A starting from same row as the comparison valu from column A)
Hope it makes sense. I did that on excel but I am trying to do it on Power Bi or excel query
Example:
look for value B1 in the rangeA1-A51 if found return "Yes" otherwise "no" in C1
( is it easier to check the range of A column values from the date Column ?)
Look for B2 in range B2-B52 if found return "Yes" otherwise "no" in C2
Look for B3 in range B3-B53 if found return "Yes" otherwise "no" in C3
.........
Date column A column B Column C
1 124 136 Yes
2 245 268 No
3 567 456 Yes
4 136 744 No
5 566 909 Yes
6 456 888 No
7 555 434 No
8 909 111 No
9 439 222 Yes
. ... ... ...
. ... ... ...
. ... ... ..
48 481 333 No
49 222 767 No
50 989 321 No
51 790 015 No

If you want this to be achieved through a DAX calculated column
Column C =
IF ( ( 'Table'[column B] ) IN VALUES ( 'Table'[column A] ), "Yes", "No" )
If you want this to be achieved through a DAX measure
Measure =
VAR _lookUP = CALCULATE (
MAX ( 'Table'[column A] ),
FILTER (
ALL ( 'Table' ),
( 'Table'[column A] ) IN SUMMARIZE ( 'Table', 'Table'[column B] )
)
)
RETURN IF(_lookUP=BLANK(),"No","Yes")

Related

In VBA, check matches by grouping variable

I need to produce a new column that checks for matches in the m1, m2 columns, per ID and returns a character, depending on matching status. So, for each ID, if m1, m2 match values, return 'a', if m1 = 'No', return 'b' and if m2 = 'No', return 'c'.
Example below
ID m1 m2 new_col
111 1 1 a
111 2 2 a
222 1 1 a
222 No 2 b
222 2 3 a
333 1 No c
333 2 1 a
333 3 2 a
333 4 3 a
You can use a formula to calculate the new column:
Assuming your data starts at A2, here is the formula for E2:
=IF(IF(B2="No","b",IF(C2="No","c",COUNTIFS($A$2:$A$10,A2,$B$2:$B$10,C2)))=1,"a",IF(B2="No","b",IF(C2="No","c",COUNTIFS($A$2:$A$10,A2,$B$2:$B$10,C2))))
Note that the formula only checks the first 9 rows based on your sample data.
Also note that the 5th line (222\2\3) has an unknown result because none of the criteria match.
Here is the output with the formula:

Line up Column B and its Value in Column C with Column A values retaining original order of column A. Puts non-matching column B values below

Please can anyone help out me doing this?
I have two main columns A and B. Column A contains a product code and column B contain its price. Now I have some product code in column C. I need their prices and maintain column C order.
A B C D
110 $10 115
111 $12 120
112 $18 117
113 $13 111
114 $22
115 $24
116 $98
117 $26
118 $77
119 $34
120 $17
Enter the formula in Column D and drag it down,
=IFERROR(INDEX(B:B,MATCH(C1,A:A,0),1),"")

remove mismatched rows in excel

I am having an excel file with 2000 records containing few columns like
A B C D E
114 5 270 product1 118
117 3 150 product1 190
118 9 300 product2 114
190 6 110 product1
191 11 540 product3
what I want to do is I want to remove the rows that are not matching the column A with E.
Expected Output
A B C D E
114 5 270 product1 114
118 9 300 product2 118
190 6 110 product1 190
Please help me
Assumption: your data table is in Sheet1, your Expected Output Table is in Sheet2.
Steps:
Copy column E of data table (DT) to column A of Expected Output Table (EOT).
Sort col A of EOT ascendingly (e.g. Data Ribbon > Sort & Filter).
Formula in B1 (EOT):
=Index(Sheet1!B$1:B$5, Match(Sheet2!$A1, Sheet1!$A$1:$A$5, 0), 1)
Above formula goes into the columns B to D in EOT.
Formula in E1 (EOT):
=$A1
The Index/Match would work even better if you had column headers. Then it would not matter whether the info from col B (DT) also goes into col B in EOT. Anyways, remember to adjust the ranges to your actual ones, and be careful with the $ signs.

Returning next match to a equal value in a column

I often need to search through columns to find the match to values and then return the according value.
My issue is that INDEXand MATCHalways return the first value in the column.
EX. I got 7 car dealers and this is the sales last month. Oslo and Berlin sold the same ammount and INDEX(D:E,MATCH(B1,E:E,0),1)) in column C will return the first hit from column D.
A B C D E
rank Sales Delaer
1 409 London | Tokyo 272
2 272 Tokyo | London 409
3 257 Hawaii | oslo 248
4 255 Stockholm | numbai 240
5 248 Oslo | Berlin 248
6 248 Oslo | hawaii 257
7 240 Numbai | Stockholm 255
At the moment my best solution is to first find the row each value in B got in E with MATCH(B1,E:E,0) and add that to a new column (column F). Then I can add another formula in the next column, which is what I currently have to do:
=IF(F2=F1;MATCH(F2;INDIRECT("F"&(1+F1)):$F$7;0))+F2
Is there a better approach at this?
In B2 use the following standard formula,
=IFERROR(LARGE(E$2:E$8, ROW(1:1)), "")
Fill down as necessary.
In C2 use the following standard formula,
=INDEX(D$2:D$8, AGGREGATE(15, 6, ROW($1:$7)/(E$2:E$8=B2), COUNTIF(B$2:B2, B2)))
Fill down as necessary.
        
[Optional] - Repair the ranking in column A.
In A2 use the following formula,
=SUMPRODUCT((B$2:B$8>=B2)/(COUNTIFS(B$2:B$8, B$2:B$8&"")))
Fill down as necessary.
        

Combining data tables

I have two data tables, similar to the ones below:
table1
index value
a 6352
a 67
a 43
b 7765
b 53
c 243
c 7
c 543
table 2
index value
a 425
a 6
b 532
b 125
b 89
b 664
c 314
I would like to combine the data in one table as in the table bellow using the index values. The order is important, so the first batch of values under one index in the common table must be from the table 1
index value
a 6352
a 67
a 43
a 425
a 6
b 7765
b 53
b 532
b 125
b 89
b 664
c 243
c 7
c 543
c 314
I tried to do it using VBA but I'm sadly a complete novice and I was wondering if someone has any pointers how to approach to write the code?
Copy the values of the second table (without the headers) under the values of the first table, select the two resultant columns and sort them by index.
Hope it works!

Resources