我必须每周将一个名单列表输入一个单独的应用程序,该应用程序仅支持" name1"," name2",格式的输入......只需要一直是名称,逗号,空格,其他名称,逗号,等等。
名称列表通常是相同的,但它们分配到两组(现在/不在)总是不同的。因此,我必须从上周的报告中按名称复制(或剪切)名称,并按姓名将其名称粘贴到当前周的那些组中。我在考虑一个宏(理想情况下每个名称的按钮),它将这两个名称分配给两行。
我只需点击各种名称,它就会将它们划分为这些组。然后我只是复制单元格C2和C4并将其粘贴在那个不友好的程序中。
我在这里发现了类似的内容:excel row to comma separated
但我想根据我在会议上看到的内容分发这些名字。
答案 0 :(得分:0)
使用数组和连接数组。
Sub mytest()
Dim vDB, vPresent(), vAbsent()
Dim n As Long, i As Long
vDB = Range("a1", Range("a" & Rows.Count).End(xlUp))
For i = 1 To UBound(vDB, 1) Step 2
n = n + 1
ReDim Preserve vAbsent(1 To n)
vAbsent(n) = vDB(i, 1)
If i + 1 > UBound(vDB, 1) Then Exit For
ReDim Preserve vPresent(1 To n)
vPresent(n) = vDB(i + 1, 1)
Next i
Range("c2") = Join(vPresent, ", ")
Range("c4") = Join(vAbsent, ", ")
End Sub
答案 1 :(得分:0)
创建两个按钮,分别为Present_button
和Absent_button
。
以下函数读取当前选定的每个单元格并返回一个字符串。
Function selected_cells_to_csv() as String
Dim strOutput As String
For Each c In Selection.Cells
If strOutput <> "" Then strOutput = strOutput & ", "
strOutput = strOutput & c.Value
Next
selected_cells_to_csv = strOutput
End Function
以下两个宏是各个按钮背后的代码。两者都做同样的事情,只是将返回值放入适当的单元格中。
Sub Present_Button_Click()
Range("C2").Value = selected_cells_to_csv
End Sub
Sub Absent_Button_Click()
Range("C4").Value = selected_cells_to_csv
End Sub
要使用此功能,请突出显示所有当前人物,然后单击[Present]按钮。然后突出显示缺席的人并单击[缺席]按钮。
理论上,您可以使用一个按钮完成所有操作,一次通过所有选定的单元格,然后在另一个通道中获取所有未选择的单元格,但这需要检测列表等,并且我想象每周一次的过程这就足够了。