Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Mic1979
Post Partisan
Post Partisan

Cells Offset

Dear all,

 

I need to shift the cells on the right in my workload.

 

The idea is this:

1. I need to check what stored is in the column "Name".

2. If in the cells of the column "Name" I have the word "Labour", then the value stored in the column "Part Number", needs to put in the column "Labour Cost (MATURE). Differently, no change

 

Mic1979_0-1747905389752.png

 

I thought to this code:

OffsetLabour = Table.FromRecords(
Table.TransformRows(#"Changed Type1",
(r)=> Record.TransformFields(
r, {{"Name", each if Text.Contains(_,"Labour") then r[#"Labour Cost (MATURE)"]=r[#"Part Number"] else null}})))

 

However, this is not working

Mic1979_1-1747905550379.png

 

Could you support?

Thanks

1 ACCEPTED SOLUTION
AlienSx
Super User
Super User

    OffsetLabour = ((cols) => Table.SplitColumn(
        Table.CombineColumns(
            #"Changed Type1", 
            cols, 
            (x) => if Text.Contains(x{0}, "Labour") then {x{0}, x{2}, x{1}} else x,
            "combined"
        ),
        "combined", 
        (x) => x, 
        cols
    ))({"Name", "Part Number", "Labour Cost (MATURE)"})

View solution in original post

3 REPLIES 3
Mic1979
Post Partisan
Post Partisan

Thanks for your suggestions.

 

In the meatime, i made the following:

 

OffsetLabour = Table.FromRecords(
Table.TransformRows(#"Added Custom",
(r)=> Record.TransformFields(
r,
{
{"Labour Cost (MATURE)", each if Text.Contains(r[Name],"Labour") then r[#"Part Number"] else null},
{"Part Number", each if Text.Contains(r[Name],"Labour") then null else _}
}
)
)
),

slorin
Super User
Super User

Hi @Mic1979 

 

...
OffsetLabour1 = Table.ReplaceValue(#"Changed Type1", each Text.Contains([Name],"Labour"), each [#"Part Number"],
(actual, test, new) => if test then new else actual, {"Labour Cost (MATURE)"}),
OffsetLabour2 = Table.ReplaceValue(OffsetLabour1, each Text.Contains([Name],"Labour"), null,
(actual, test, new) => if test then new else actual, {"Part Number"})
...

Stéphane

AlienSx
Super User
Super User

    OffsetLabour = ((cols) => Table.SplitColumn(
        Table.CombineColumns(
            #"Changed Type1", 
            cols, 
            (x) => if Text.Contains(x{0}, "Labour") then {x{0}, x{2}, x{1}} else x,
            "combined"
        ),
        "combined", 
        (x) => x, 
        cols
    ))({"Name", "Part Number", "Labour Cost (MATURE)"})

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.