在给定范围内设置格式并写入一些值后,相同的格式将部分自动应用于其他范围

我不确定这是否是问题,或者是否是Excel的预期行为。 如果确实是预期的行为,我将不胜感激,因为我看不到一个模式。

如果将格式和某些值设置为一个范围,然后仅将值分配给位于第一个范围下方的另一个范围,则将第一个范围的格式部分(随机地)应用于新范围。

我的testingfunction:

function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; } function loadSampleData(applyFormat) { var columnCount = 30; if (applyFormat) { columnCount = 5; } var data = []; for (var rows = 0; rows < 4; rows++) { var row = []; for (var columns = 0; columns < columnCount; columns++) { var value = columns; if (getRandomInt(1, 3) == 2) { value = "text"; } row.push(value); } data.push(row); } return Excel.run(function (ctx) { var selectedRange = ctx.workbook.getSelectedRange().load(['rowCount', 'columnCount']); var extendedRange; return ctx.sync().then(function () { var totalRows = data.length; var totalColumns = data[0].length; var deltaRows = totalRows - selectedRange.rowCount; var deltaColumns = totalColumns - selectedRange.columnCount; extendedRange = selectedRange.getResizedRange(deltaRows, deltaColumns); if (applyFormat) { extendedRange.format.fill.color = "orange"; extendedRange.format.font.color = "white"; } else { extendedRange.clear(); } extendedRange.values = data; }).then(ctx.sync) }).catch(errorHandler); } 

脚步:

  1. 在任务窗格中创build一个button(buttonA)。 此button必须调用loadSampleData并传递true,才能将某些数据和格式(填充和字体颜色)写入一个范围。 (范围A)
  2. 在任务窗格中创build另一个button(buttonB)。 此button必须调用loadSampleData并传递false,才能将数据(无格式)写入更大范围(范围B)。
  3. 单击A1单元格,然后单击buttonA.请注意出现的范围和格式。
  4. 单击A6,然后单击buttonB.请注意,即使未将明确的格式设置为范围,将写入更大的范围,并且它的某些单元格与步骤3中的范围具有相同的格式。
  5. 在仍然选中A6的情况下,多次点击buttonB. 请注意,随着范围值的更改,格式化的单元格也会更改。

笔记:

  • 如果范围B写在范围A以上,则不会发生这种情况。
  • 如果范围B写入范围A以下4(或更多)行,则不会发生这种情况。

谢谢!

令人着迷的是,即使在用户界面中,我也可以重现这个问题,而无需编程。 Excel正在做一些模式匹配,但我承认我很难破译这个模式是什么…

在这里输入图像说明

我会和我们的团队讨论 – 但是在具体的指导方面,我认为你最安全的select是设定价值,然后清除格式。 如果你想要超级小心,你甚至可以更进一步:

  1. 设置数字格式(以确保string与数字与datestring得到解释,因为你想他们是)
  2. 设置值
  3. range.clear(Excel.ClearApplyTo.formats);
  4. 重新设置数字格式

我承认,这似乎是一个值得改进的工作stream程。 让我看看我们是否可以修正“价值”,或提供一种方法,让您一次设定值和数字格式,并以比今天更严格的方式。