遇到email 邮件,收件人多的时候要以 ; 进行分隔
数据库 select 的条件 in (xxxxx,xxx)要用逗号分隔
python list 则是[xxxx,xxxx] 逗号分隔,而且还要添加 " ' "
整理这个数据实在麻烦
希望效果如下:这样以后转换就很方便
写一个 excel vba 如下
Sub ConcatenateCellsAsList()
'定义变量lastRow,用于存储最后一行的行号(数据所在的最后一行)
Dim lastRow As Long
'定义变量lastCol,用于存储最后一列的列号(数据所在的最后一列),不过在这里下面重新赋值为1了,可根据实际需求调整是否获取真实的最后一列位置
Dim lastCol As Long
'定义变量cellContents,用于拼接单元格的内容,最终会将拼接好的内容放置到指定单元格中
Dim cellContents As String
'定义变量r,用于循环遍历行的计数器
Dim r As Long
'定义变量c,用于循环遍历列的计数器
Dim c As Long
'从第三行第二列(Excel中行列索引从1开始,对应代码里的2和3)的单元格获取值,并赋值给变量LK,这里不清楚LK具体含义,可能是左括号之类的拼接字符,可根据实际需求调整
LK = Cells(2, 3)
'从第三行第三列的单元格获取值,并赋值给变量RK,可能是右括号之类的拼接字符,可根据实际情况调整其用途
RK = Cells(3, 3)
'从第四行第三列的单元格获取值,并赋值给变量DH,推测可能是分隔符之类的字符,同样可按需调整
DH = Cells(4, 3)
'从第五行第三列的单元格获取值,并赋值给变量ZF,也许是用于包裹每个单元格值的字符,如引号之类,具体依实际而定
ZF = Cells(5, 3)
'获取A列(因为min_col默认是1,如果要获取其他列起始数据的最后一行,需调整参数)最后一个有数据的行号,赋值给lastRow变量
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
'这里将lastCol固定赋值为1,意味着只处理第一列的数据,如果要处理多列,可取消下面这行注释,并启用上面原本定义lastCol的那行代码来获取真实的最后一列位置
' lastCol = Cells(1, Columns.Count).End(xlToLeft).Row
lastCol = 1
'先将LK的值赋给cellContents,作为拼接内容的起始部分,例如如果LK是左括号,那就是拼接内容最开始的字符
cellContents = LK
'外层循环,从第一行开始遍历每一行,直到最后一行(lastRow)
For r = 1 To lastRow
'内层循环,从第一列开始遍历每一列,这里因为lastCol被赋值为1,所以只遍历第一列,若要处理多列需调整lastCol值
For c = 1 To lastCol
'将cellContents已有的内容、ZF(可能是包裹字符)、当前单元格(r行c列)的值、ZF(再次添加包裹字符)依次拼接起来,更新cellContents的值
cellContents = cellContents & ZF & Cells(r, c).Value & ZF
'如果不是最后一行或者不是最后一列(这里因为只处理一列,所以主要判断是否为最后一行),就添加DH(推测是分隔符)
If r < lastRow Or c < lastCol Then
cellContents = cellContents & DH
End If
Next c
Next r
'将RK(可能是右括号之类的结尾字符)拼接到cellContents末尾,完成整个内容的拼接
cellContents = cellContents & RK
'将拼接好的cellContents的内容赋值给C6单元格,实现将处理后的内容输出到指定单元格
Range("C6").Value = cellContents
End Sub
请注意,代码中的 LK
、RK
、DH
、ZF
这些变量对应的单元格内容具体用途,要根据你的实际需求来确定,从代码逻辑推测它们是用于拼接格式相关的一些字符(比如括号、分隔符、引号等),你可以根据真实的数据格式要求去调整对应单元格中的值来满足使用场景。如果要处理多列数据等情况,也需要对代码中关于列的处理部分进行相应修改