IMPORTXML 更改单元格中的导入格式
IMPORTXML Change the imported format in a cell
我使用 IMPORTXML 公式从网站导入值。
该公式导入一列中包含 4 个单元格的列表。
第三个单元格的值为带点的数字,因此被识别为文本。
我想用逗号更改点,但是当我使用 SUBSTITUTE 函数时,第一个单元格的值被转换,其他三个单元格为空。
基本公式如下:
=IMPORTXML("https://opensea.io/collection/primeapeplanetpap?tab=activity";"//div[contains(@tabindex,'-1')]")
这是带有 SUBSTITUTE 函数的公式:
=SUBSTITUTE(SUBSTITUTE(IMPORTXML("https://opensea.io/collection/primeapeplanetpap?tab=activity";"//div[contains(@tabindex,'-1')]"); "K";"");".";",")*1
如果可能的话,我希望只更改第三个单元格的格式,而其他单元格保持原样。
如果有应用脚本的解决方案,我也很感兴趣。
提前感谢您的回答
我不知道如何用公式来完成。
这是在范围内的所有单元格中进行更改的简单脚本:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('C2:C5'); // <-------- set your range here
var values = range.getDisplayValues();
for (let row in values) for (let cell in values[row]) {
values[row][cell] = values[row][cell].replace('K','').replace('.',',')
}
range.setValues(values);
}
您可以将自定义菜单 'Script > Clean numbers' 添加到 运行 菜单中的功能:
function onOpen() {
SpreadsheetApp.getUi().createMenu('Scripts')
.addItem('Clean numbers', 'myFunction')
.addToUi();
}
我刚打开你的点差sheet,它显示了正确的数字,没有替换:
可能实际的答案不是替换值,而是更改 Spreadsheet 的区域设置以适应 xml 来源的设置?
您还可以尝试将所有数字转换为文本,然后再从 sheet 中获取它们。在 var range = ...
:
之后一行就可以完成
range.setNumberFormat('@');
也许在 range.setValues(values)
之后的最后:
range.setNumberFormat('#,##0.0000');
如果你毕竟需要数字。
我使用 IMPORTXML 公式从网站导入值。
该公式导入一列中包含 4 个单元格的列表。
第三个单元格的值为带点的数字,因此被识别为文本。
我想用逗号更改点,但是当我使用 SUBSTITUTE 函数时,第一个单元格的值被转换,其他三个单元格为空。
基本公式如下:
=IMPORTXML("https://opensea.io/collection/primeapeplanetpap?tab=activity";"//div[contains(@tabindex,'-1')]")
这是带有 SUBSTITUTE 函数的公式:
=SUBSTITUTE(SUBSTITUTE(IMPORTXML("https://opensea.io/collection/primeapeplanetpap?tab=activity";"//div[contains(@tabindex,'-1')]"); "K";"");".";",")*1
如果可能的话,我希望只更改第三个单元格的格式,而其他单元格保持原样。
如果有应用脚本的解决方案,我也很感兴趣。
提前感谢您的回答
我不知道如何用公式来完成。
这是在范围内的所有单元格中进行更改的简单脚本:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('C2:C5'); // <-------- set your range here
var values = range.getDisplayValues();
for (let row in values) for (let cell in values[row]) {
values[row][cell] = values[row][cell].replace('K','').replace('.',',')
}
range.setValues(values);
}
您可以将自定义菜单 'Script > Clean numbers' 添加到 运行 菜单中的功能:
function onOpen() {
SpreadsheetApp.getUi().createMenu('Scripts')
.addItem('Clean numbers', 'myFunction')
.addToUi();
}
我刚打开你的点差sheet,它显示了正确的数字,没有替换:
可能实际的答案不是替换值,而是更改 Spreadsheet 的区域设置以适应 xml 来源的设置?
您还可以尝试将所有数字转换为文本,然后再从 sheet 中获取它们。在 var range = ...
:
range.setNumberFormat('@');
也许在 range.setValues(values)
之后的最后:
range.setNumberFormat('#,##0.0000');
如果你毕竟需要数字。