Assuming your data columns are A:C and your first data row is row 1, you could use a rule:

```
=COLUMN()=MATCH(MIN($A1:$C1),$A1:$C1,0)
```

This will find the minimum value in the row, then find the first cell in the row matching that value. If the cell's column number is the same, it will apply the format.

You can create the conditional format for the first row, then copy, paste-special format to the rest of the range.

**Range translation for different worksheet location**

MATCH produces a result relative to it's own range definition (first cell in range = position 1, regardless of its location on the worksheet). If the actual columns are G:I, the first column in your worksheet range is column 7, so the formula needs to be shifted by 6 columns. You can either add 6 to the match result or subtract 6 from the column number for comparison. You could use either:

```
=COLUMN()=MATCH(MIN($G1:$I1),$G1:$I1,0)+6
```

or

```
=COLUMN()-6=MATCH(MIN($G1:$I1),$G1:$I1,0)
```

The row number isn't a factor, so for row 5, the row references would be `5`

instead of `1`

in the formulas.

In a comment, you asked about making this more generic, so it would remain correct if you insert a column. That adds another dimension to any formula; you basically need to replace hard-coded adjustments with formulas.

Instead of a fixed adjustment of `6`

, you could use the current number of first column minus `1`

. If you insert or delete columns, range references are automatically adjusted. So you could use:

```
=COLUMN()=MATCH(MIN($G1:$I1),$G1:$I1,0)+COLUMN($G1)-1
```