Javascript在Excel中将两列名称合并为一列
我正在使用Data Miner从网站表中抓取姓名列表。我正在尝试将名称添加到Excel列中。被刮取的名字是姓、名的格式。以下是一些名称供参考。我想重新排列名字,让名字排在姓氏之前,并删除逗号。我已经能够拆分姓名,使用下面的代码在第1列中添加名字,在第2列中添加姓氏。我不能把名字放回第一列。如果有人能告诉我怎么做,那就太好了。此外,小特德·波特先生的名字中有两个逗号。我该怎么做才能确保格式与其他名称匹配,但在Potter和Jr之间保留逗号Javascript在Excel中将两列名称合并为一列,javascript,excel,Javascript,Excel,我正在使用Data Miner从网站表中抓取姓名列表。我正在尝试将名称添加到Excel列中。被刮取的名字是姓、名的格式。以下是一些名称供参考。我想重新排列名字,让名字排在姓氏之前,并删除逗号。我已经能够拆分姓名,使用下面的代码在第1列中添加名字,在第2列中添加姓氏。我不能把名字放回第一列。如果有人能告诉我怎么做,那就太好了。此外,小特德·波特先生的名字中有两个逗号。我该怎么做才能确保格式与其他名称匹配,但在Potter和Jr之间保留逗号 安,炳勋 安塞尔,亚伯拉罕 安德森,马克 盔甲,瑞安 巴
- 安,炳勋
- 安塞尔,亚伯拉罕
- 安德森,马克
- 盔甲,瑞安
- 巴德利,亚伦
- 贝克,克里斯
- 巴恩斯,瑞奇
- 伯杰,丹尼尔
- 小波特,特德
var cleanup=函数(结果){
//此示例显示您可以在每个
//您刮取的数据行会产生结果并更改每列的值
//调试器;//取消对此行的注释,以便在Chrome Inspector中调试脚本
$.each(results,function(){//循环遍历每一行已刮取的数据
var parts = this.values[0].split(', '); // get value from column 1 and split it by ' ' var first_name = parts[parts.length - 1]; //Loop through the remaining elements //for "Baker, Chris" this will just be one loop var second_name = ""; for (var i = 0; i < parts.length - 1; i++) { //if i = 0 then just add the element otherwise //if i > 0 then add what is already there plus space plus next element if (i > 0) { //this.values[1] = this.values[1] + " " + parts[i]; second_name = second_name + ", " + parts[i]; }else { //this.values[1] = parts[i]; second_name = parts[i]; } } this.values[0] = first_name + " " + second_name;
console.log(this.values[0]);var parts=this.values[0]。拆分(',');//从列1中获取值并按“”拆分 var first_name=零件[parts.length-1]; //循环遍历其余的元素 //对于“贝克,克里斯”来说,这只是一个循环 var second_name=“”; 对于(变量i=0;i
0,则添加已经存在的内容加上空间加上下一个元素 如果(i>0){ //this.values[1]=this.values[1]+“”+部分[i]; 第二个名称=第二个名称+“,”+部分[i]; }否则{ //该值为[1]=第[i]部分; 第二个名称=零件[i]; } } 此.values[0]=第一个\u名称+“”+第二个\u名称;
})) 返回结果;//返回修改后的结果 }; - 分头做
- 将数组的最后一个元素放在第1列的前面
- 循环遍历其余元素,并在第2列将它们连接在一起
- 将第3列中的名字和姓氏连接在一起
- 如果没有上下文/更多的代码,就有点难说了,但总的来说,我认为这样的方法会奏效
如果您想要一个真实的例子,请参见此处:
var cleanup = function(results) {
$.each(results, function(){
//split the string of "Baker, Chris" into an array of ["Baker", "Chris"]
//split the string of "Potter, Jr., Ted" into an array of ["Potter", "Jr.", "Ted"]
var parts = this.values[0].split(', ');
//set the first column to the last element of the array. i.e. "Chris" or "Ted"
//this.values[0] = parts[parts.length - 1];
var first_name = parts[parts.length - 1];
//Loop through the remaining elements
//for "Baker, Chris" this will just be one loop
var second_name = "";
for (var i = 0; i < parts.length - 1; i++) {
//if i = 0 then just add the element otherwise
//if i > 0 then add what is already there plus space plus next element
if (i > 0) {
//this.values[1] = this.values[1] + " " + parts[i];
second_name = second_name + " " + parts[i];
}else {
//this.values[1] = parts[i];
second_name = parts[i];
}
}
//concatenate the results together in the third column
//i.e. "Chris Baker" or "Ted Potter Jr."
//this.values[2] = this.values[0] + " " + this.values[1];
//Or now output only in first column
this.values[0] = first_name + " " + second_name;
});
return results;};
var cleanup=函数(结果){
$.each(结果,函数(){
//将“Baker,Chris”字符串拆分为[“Baker”,“Chris”]数组
//将字符串“Potter,Jr.,Ted”拆分为一个数组[“Potter”,“Jr.”,“Ted”]
var parts=this.values[0]。拆分(',');
//将第一列设置为数组的最后一个元素,即“Chris”或“Ted”
//此.value[0]=零件[parts.length-1];
var first_name=零件[parts.length-1];
//循环遍历其余的元素
//对于“Baker,Chris”,这只是一个循环
var second_name=“”;
对于(变量i=0;i0,则添加已经存在的内容加上空间加上下一个元素
如果(i>0){
//this.values[1]=this.values[1]+“”+部分[i];
第二个名称=第二个名称+“”+部分[i];
}否则{
//该值为[1]=第[i]部分;
第二个名称=零件[i];
}
}
//将结果连接到第三列中
//i、 e.“克里斯·贝克”或“小泰德·波特”
//this.values[2]=this.values[0]+“”+this.values[1];
//或者现在只在第一列中输出
此.values[0]=第一个\u名称+“”+第二个\u名称;
});
返回结果;};
我非常感谢您的回复。另外,我正在尝试为一个梦幻高尔夫联盟创建一个电子表格。我正试图搜集pga联邦快递杯排名的信息,并将其与锦标赛场地进行比较,以便我可以根据球员在联邦快递杯排名中的位置对该锦标赛的球员进行排名。排行榜的名字采用“名”“姓”格式。我已经建立了Data Miner,从pga巡回赛网站上获取这些信息。锦标赛字段列表的格式与我在问题中描述的相同。我需要两个字段的格式相同,以便我可以使用excel中的一些索引匹配公式来比较这两个字段。好的,所以我预计您的第一行将是“An,Byeong Hun”,我的代码将给您:| Byeong Hun | An | Byeong Hun An |和您的最后一行“小波特,泰德”会给你|泰德|小波特|小泰德|波特|这不是正确的格式吗?你想要什么格式?我们可以很容易地改变行的索引来改变数据进入的列。比如this.values[0]=parts[parts.length-1];
可以很容易地是this.values[1]=parts[parts.length-1];
等。但是您喜欢数据。这是正确的格式。我希望数据只在第一列显示连接的名称。这可以通过将数组设置为变量来实现吗,如var x=parts[this.value[1];
和y=parts[this.value[2]]然后引用最终索引中的变量,如this.values[0]=x.concat(“,y);