提问人:Ponoco-nuchi 提问时间:11/9/2023 最后编辑:tallerPonoco-nuchi 更新时间:11/9/2023 访问量:48
将文本分隔到一列中,并将其移动到另一列,Excel 脚本
Separate text in once column and move it to another, Excel Scripts
问:
我正在尝试在 excel 中编写一个脚本,该脚本将日期和时间值分散在一列中,并将日期放入单独的列中。例如,我在 A1 列中有“2023 年 11 月 4 日上午 11:00”,而理想情况下我需要 A1 中的日期和 B1 中的时间;我需要它来遍历每个使用过的行。我尝试了几种方法,但不断出现错误。我正在使用脚本来尝试自动化此操作。(我已经编写了宏并正在工作,但我用于自动化的软件不接受宏)
我尝试过的一件事
let s = mainSheet.getRange("A2").getValue().toString()
let ss = s.split(" ")
console.log(ss)
控制台返回值为“45231”
答:
1赞
taller
11/9/2023
#1
选项 1:对列 A 和 B 应用不同的日期时间格式,以便提取日期和时间。
如果选项 1 不符合您的要求,请考虑使用选项 2。
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
selectedSheet.getRange("B1").copyFrom(selectedSheet.getRange("A:A"), ExcelScript.RangeCopyType.all, false, false);
selectedSheet.getRange("A:A").setNumberFormatLocal("m/d/yyyy");
selectedSheet.getRange("B:B").setNumberFormatLocal("h:mm AM/PM");
}
选项 2:将文本拆分为两部分
function main(workbook: ExcelScript.Workbook) {
let selectedSheet = workbook.getActiveWorksheet();
let lastCell = selectedSheet.getRange("A:A").getLastCell().getRangeEdge(ExcelScript.KeyboardDirection.up);
let dataRange = selectedSheet.getRange("A1:A" + (lastCell.getRowIndex()+1));
let dataTexts = dataRange.getTexts();
let resRange = dataRange.getResizedRange(0,1);
let resTexts = resRange.getTexts();
for(let i=0; i<dataTexts.length; i++){
resTexts[i] = splitDateAndTime(dataTexts[i][0])
}
resRange.setValues(resTexts);
selectedSheet.getRange("A:A").setNumberFormatLocal("m/d/yyyy");
}
function splitDateAndTime(dateTimeString: string): [string, string] {
const dateTimeRegex = /^(\d{1,2}\/\d{1,2}\/\d{4})\s+(.+)/;
const match = dateTimeString.match(dateTimeRegex);
if (match) {
const datePart = match[1];
const timePart = match[2];
return [datePart, timePart];
}
return [dateTimeString, ""];
}
如果不需要验证日期时间字符串,可以简化如下。splitDateAndTime
function splitDateAndTime(dateTimeString: string): [string, string] {
const parts = dateTimeString.split(" ");
if(parts.length === 3){
return [parts[0], parts.slice(1,).join(" ")];
}
return [dateTimeString, ""];
}
评论