我有一个数据集,如下图所示,在我的电子表格的col A中,我现在需要将百分比值移动到与名称相同的行上的col B.
A
1 John
2 100%
3 Mike
4 100%
5 Paul
6 100%
7 Ken
8 100%
我需要将每隔一行移到一个新列,所以它应该看起来像这样
A B
1 John 100%
2 Mike 100%
3 Paul 100%
4 Ken 100%
6 John 100%
7 John 100%
我尝试了一些不同的方法,但我无法让它起作用!
非常感谢任何帮助。
编辑
包含我尝试过的一些代码,我使用的是reg。表达式过滤掉一些其他数据,然后我需要对百分比值进行转换。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sortSheet = ss.getSheetByName("Sheet1");
var lastRow = sortSheet.getLastRow();
var searchData = sortSheet.getRange(1,1,lastRow,1).clear({formatOnly:true})
.setNumberFormat('@STRING@').getValues();
var regExp = new RegExp ('^[0-9]{2} [A-Za-z]{3} [0-9]{4}$');
for(var y =searchData.length - 1; y >= 0 ; y--) {
if(regExp.test(searchData[y])) {
var rowIndex = (y); Logger.log("Row index" + rowIndex)
sortSheet.deleteRow(rowIndex + 2).deleteRow(rowIndex + 1);
}
}
var searchData2 = sortSheet.getRange(1,1,lastRow,1).getValues();
var regExp2 = new RegExp ('^[0-9]{2}%$');
for(var x =searchData2.length ; x >= 0 ; x--) {
if(regExp2.test(searchData[x])) {
var getPercentage = new Array;
var rowIndex2 = (x); Logger.log("Row index" + rowIndex2)
var temp = searchData2[x];
getPercentage.push([searchData2]); Logger.log(getPercentage)
}
}
var paste = sortSheet.getRange(1, 2, getPercentage.length,
1).setValues(getPercentage)
}
这不是我在发布此问题之前删除的确切代码。
请随时向我提供一些有关如何改进代码的建议。 (我刚开始学习2周前的Javascript)
答案 0 :(得分:0)
长话短说:
声明具有所需长度的二维数组(数组的长度除以2)。
循环并将每个第二个元素放入[x] [1],将所有其他元素放入[x] [0]
var sort = function(arr) {
var b = new Array(arr.length / 2)
for (i=0; i <3; i++)
b[i]=new Array(1);
arr.forEach(function(value, index, arr) {
if(index % 2 == 0 || index == 0) {
b[Math.floor(index / 2)][0] = value;
} else {
b[Math.floor(index / 2)][1] = value;
}
});
return b;
}
在这里,我采用快速而肮脏的方法。随意改进它。
答案 1 :(得分:0)
您可以在B列上使用以下公式,并根据需要自动填充
=indirect(ADDRESS(ROW() * 2 - 1,COLUMN()-1) )
这一个在C栏上,并在必要时自动填充
=indirect(ADDRESS(ROW() * 2,COLUMN()-2) )
对于这种情况,您的数据位于A列,最后您的结果将位于B和C