Forum Discussion
Multiple CountIf function in Power Query
- 5 years ago
Anonymous
Please try the following code, I have added two columns as requested:let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnEMcVTSwUbF6sBl/fxhBLoMsgKIXCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t]), #"Added Custom" = Table.AddColumn(Source, "1st Two Columns", each List.Count(List.Select(Record.ToList(Record.SelectFields(_,{"Column1","Column2"})), each _ = "NO"))), #"Added Custom1" = Table.AddColumn(#"Added Custom", "2nd Two Columns", each List.Count(List.Select(Record.ToList(Record.SelectFields(_,{"Column3","Column4"})), each _ = "NO"))) in #"Added Custom1"________________________
If my answer was helpful, please mark it as a solution
Click on the Thumbs-Up icon if you like this reply 🙂
Hi Fowmy ,
Since the data is confidential, I have sent a modified excel file for you to have a look at it. FYI, data that I'm using comes from a Sharepoint list connected to Excel.
What I would like to achieve is a COUNTIF Function on columns. If any of these columns contains a "No", then it should count as 1.
I don't think conditional formatting column works because it doesn't seem to count the next column after that. I have thought of using excel formula but it would be easier if I can achieve this in Power Query itself.
Thanks!
Hello Anonymous
you can add this formula to a new column
if List.AnyTrue(List.Transform(Record.ToList(_), each _ = "no"))=true then 1 else 0
this gives you 1 if a "no" is present in your row
here the complete code
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WqkwtVtKBknn5SrE60QgOXATGRlOCIOGKUIXQDY8FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [A = _t, B = _t, C = _t]),
PreviousStep = Table.TransformColumnTypes(Source,{{"A", type text}, {"B", type text}, {"C", type text}}),
AddCountIf = Table.AddColumn
(
PreviousStep,
"CountIfNo",
each if List.AnyTrue(List.Transform(Record.ToList(_), each _ = "no"))=true then 1 else 0
)
in
AddCountIf
Copy paste this code to the advanced editor in a new blank query to see how the solution works.
If this post helps or solves your problem, please mark it as solution (to help other users find useful content and to acknowledge the work of users that helped you)
Kudoes are nice too
Have fun
Jimmy