https://bugs.documentfoundation.org/show_bug.cgi?id=145465

            Bug ID: 145465
           Summary: Conditional formatting rules based on INDIRECT()
                    function not applied if applied by "paste formatting"
           Product: LibreOffice
           Version: 7.1.6.2 release
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: medium
         Component: Calc
          Assignee: [email protected]
          Reporter: [email protected]

Description:
Conditional cell formatting isn't applied correctly if the conditional
formatting rules were defined by "paste formatting" and if the conditional
formatting rule is based on the evaluation of the INDIRECT() function.

Steps to Reproduce:
1. Open the attached ODS file. It has two sheets prepared with same data and
conditional formatting defined for C2:F2. Data bars are shown based on fixed
min value of 0 and max value of content of B2. The two sheets differ only by
the definition of the max value for the data bar. On the first sheet, "=$B2" is
used as formula. On the second sheet, "=INDIRECT("B" & ROW())" is used. The
Task consists of applying the conditional formatting to C3:F7.

2. Select C2:F2 and paste just the formatting to C3:F7 (by using the "Paste
Format" Button or by using "Paste Special" -> "Format"). Check the result -
data bars are shown but size depends on max value from B2 instead of B cell
from current row.

3. Open the "Manage Conditional Formatting" dialogue while Sheet 2 using Menu
"Format" -> "Conditional..." -> "Manage...";

4. Select one of the entries, e.g. "C6:F6" and hit "Edit";

5. Without modifying anything, hit "OK".

6. Notice the current state of the data bars for C6:F6. Now, hit "OK" to close
the "Manage Conditional Formatting" dialogue. Notice how the data bars changed.

7. Optionally: repeat steps 3-6 for any cells on first sheet.

Actual Results:
The conditional formatting is applied to the target cells, but the data bar
size is determined by cell B2 in every case instead of B3 for row 3, B4 for row
4 and so on.

Steps 3 to 6 explained above will modify the data bars just for the row
selected (in my example: C6:F6), but just on the second sheet (where INDIRECT()
is used to determine the max value).

Expected Results:
At least on the second sheet (using the INDIRECT() function to determine the
max value for the data bar), the data bar size should be determined by the
respective value of column B, e.g. by B3 for row 3 and so on automatically.


Reproducible: Always


User Profile Reset: No



Additional Info:
Version: 7.1.6.2 (x64) / LibreOffice Community
Build ID: 0e133318fcee89abacd6a7d077e292f1145735c3
CPU threads: 12; OS: Windows 10.0 Build 19043; UI render: Skia/Vulkan; VCL: win
Locale: de-DE (de_DE); UI: en-US
Calc: threaded

Scenario: Calc sheet with data in rows. For every row, a certain decimal "max"
value is defined in Column B. Columns C:F contains decimal values < max. Cells
C:F should formatted (in this example: using a data bar) with respect to the
max value defined in B:. Thus, conditional formatting should be applied while
the conditions differ between rows.

I've prepared two sheets to demonstrate that using relative cell references
don't work in this scenario (sheet 1). Sheet 2 proves that using INDIRECT()
works for this kind of task, but the resulting data bar doesn't show up
correctly. It will initially get drawn as if B2 providing the max value. Only
after opening the conditional formatting definition and closing it again will
update the data bars according to the referenced cell.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to