gpt4 book ai didi

excel - 连接或组合多个值并保留字体和颜色

转载 作者:行者123 更新时间:2023-12-04 20:26:44 26 4
gpt4 key购买 nike

我正在尝试将几个单元格连接或组合在一起并保持它们各自的样式。

例如:

A1: Mr (Arial, Red, size 10)
A2: Joseph (Courier, Blue, size 20)
A3: Lion (Arial, Green, size 15)

使用函数 =A1&" "&A2&" "&A3
A5: Mr Joseph Lion (Default font, default colour, default Size)

在 Concatenated 单元格 A5 中,所有字体、大小和颜色都恢复为默认值。

有没有办法结合值(value)观并保持风格。

谢谢大家。

最佳答案

您可以使用此函数 (RICHTEXTCONCAT()) 连接表格中的富文本:

function isCell(obj) {
return (typeof obj == "object" && obj.toString() == "Range" && obj.getHeight() == 1 && obj.getWidth() == 1);
}

function RICHTEXTCONCAT() {
var nargs = arguments.length;
var resultText = "";
var styles = [];

for (var i=0; i<nargs; i++) {
var arg = arguments[i];
if (isCell(arg)) {
var startPos = resultText.length;
resultText += arg.getValue();
var rtv = arg.getRichTextValue();
if (rtv) {
var runs = rtv.getRuns();
for (var j=0; j<runs.length; j++) {
styles.push({startIndex: startPos + runs[j].getStartIndex(),
endIndex: startPos + runs[j].getEndIndex(),
textStyle: runs[j].getTextStyle().copy().build()});
}
}
} else if (typeof arg == "string") {
resultText += arg;
} else {
throw new Error("Unsupported type " + typeof arg + " for argument " + (i+1) + ". Must be a cell or a string.");
}
}

var result = SpreadsheetApp.newRichTextValue().setText(resultText);
for (var i=0; i<styles.length; i++) {
if (styles[i].startIndex === styles[i].endIndex) continue;
result.setTextStyle(styles[i].startIndex,
styles[i].endIndex,
styles[i].textStyle);
}
return result.build();
}

理论上,您可以将该函数用作 custom function , 这样它就可以在一个单元格中使用,例如:
=RICHTEXTCONCAT(A1, " ", A2, " ", A3)

但是,表格可以 不是 解释富文本 return values从自定义函数。这意味着您唯一的选择是手动调用使用 setRichTextValue() 的 Google Apps 脚本函数。为了执行它。一个例子:

function myConcat() {
var sheet = SpreadsheetApp.getActive();
var range1 = sheet.getRange("A1");
var range2 = sheet.getRange("A2");
var range3 = sheet.getRange("A3");
var result = RICHTEXTCONCAT(range1, " ", range2, " ", range3);

var destinationRange = sheet.getRange("A5");
destinationRange.setRichTextValue(result);
}

如果您对作为自定义函数的可能返回值的富文本值感兴趣,请考虑向 Google 的公共(public)问题跟踪器 ( https://issuetracker.google.com) 提交功能请求。

关于excel - 连接或组合多个值并保留字体和颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58873795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com