【发布时间】:2018-01-27 03:32:04
【问题描述】:
我需要连接每个项目的 x 列数,有时它是 3 列,其他 7 或 5 列,这取决于
我正在尝试使用范围列号数组 ex [2,5,3]
列 2,5 3 按此顺序排列,此处带有分隔符 |
我已搜索但只找到静态连接函数
我有一个 VBA 宏,可以在 Excel 中按我的需要工作,所以我正在尝试用 Google Script 编写它
函数运行没有错误但没有回传 从 Logger.log() 我有点接近正确的结构
我收到undefined|b|e|c
我要回帖到最后一栏+1
我不确定这是不是最好的方法,但这是我所拥有的 任何帮助表示赞赏,谢谢
colA ColB ColC ColD ColE ColF ColG ColH
a b cc d e f g b|e|c
a2 b2 d2 e2 f2 g2 e2|c2
ect.
这是我所拥有的:
function TemplateA_n() {
Template_A("A", [2, 4, 6])
}
function Template_A(SshtName, sArr){
var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SshtName);
var sR = sSheet.getDataRange();
var sV = sR.getValues();
var sLC = sSheet.getLastColumn();
var sLR = sSheet.getLastRow();
var a = []
//Rows
for (var row = 2; row < sLR; row++){
a[row] =[]
//Columns
for (var col = 0; col < sArr.length ; col++){
if(sV[row][sArr[col]] !== "") {
if(sV[row][sArr[0]] == "") {
a[row][0] = a[row][0] + sV[row][sArr[col]];
Logger.log(a[row][0])
}
else {
a[row][0] = a[row][0] + "|" + sV[row][sArr[col]];
Logger.log(a[row][0])
}
}
}
}
sSheet.getRange(1,sLC + 1,sLR,1);
}
这里是宏
Sub ConCatA()
Dim rng As Range, r As Range, i As Long
On Error Resume Next
Set rng = Application.InputBox("Select column(s)", Type:=8)
'Set rng = Range("B1,A1,C1")
On Error GoTo 0
If rng Is Nothing Then Exit Sub
With ActiveSheet.UsedRange
ReDim a(1 To .Rows.Count, 1 To 1)
a(1, 1) = "Concat"
For i = 2 To .Rows.Count
For Each r In rng
If .Cells(i, r.Column) <> "" Then
a(i, 1) = a(i, 1) & IIf(a(i, 1) = "", "", "|") & .Cells(i, r.Column).value
End If
Next r
Next i
With .Offset(, .Columns.Count).Resize(, 1)
.value = a
End With
End With
End Sub
【问题讨论】:
标签: javascript google-apps-script google-sheets