将单元格链接到以逗号分隔的文本

时间:2017-07-13 11:43:17

标签: excel vba excel-vba

我必须每周将一个名单列表输入一个单独的应用程序,该应用程序仅支持" name1"," name2",格式的输入......只需要一直是名称,逗号,空格,其他名称,逗号,等等。

名称列表通常是相同的,但它们分配到两组(现在/不在)总是不同的。因此,我必须从上周的报告中按名称复制(或剪切)名称,并按姓名将其名称粘贴到当前周的那些组中。我在考虑一个宏(理想情况下每个名称的按钮),它将这两个名称分配给两行。

my list and desired form

我只需点击各种名称,它就会将它们划分为这些组。然后我只是复制单元格C2和C4并将其粘贴在那个不友好的程序中。

我在这里发现了类似的内容:excel row to comma separated

但我想根据我在会议上看到的内容分发这些名字。

2 个答案:

答案 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_buttonAbsent_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]按钮。然后突出显示缺席的人并单击[缺席]按钮。

理论上,您可以使用一个按钮完成所有操作,一次通过所有选定的单元格,然后在另一个通道中获取所有未选择的单元格,但这需要检测列表等,并且我想象每周一次的过程这就足够了。