excel VBA文本条件生成器

hmtdttj4  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(130)

本质上,我试图建立一个文本标准构建器,以在其他系统上使用。简单地说,我有一个excel Jmeter 板,您可以选择另一个excel工作表,其中包含名字,姓氏,出生日期,性别和其他材料的批量数据。
我希望能够创建一个VBA按钮,以便在每行上获取重要的详细信息(如每个人的名字、姓氏和DOB),并创建一个系统,在其中建立一个条件。例如,一旦数据在工作表中经过排序和格式化,系统打印出具有诸如“JOHN”AND“DOE”AND“04JUL1993”的准则的“复制和粘贴”系统。然后添加一个OR,并以相同的格式开始下一个人员的详细信息。因此,假设它会像这样重复:“约翰”和“丹尼”和“1993年8月3日”或“约翰”和“DOE”和“1993年7月4日”或“安德鲁”和“Jenkins”和“1973年2月17日”或“简”和“DOE”和“2000年3月30日”。
目标是一次获取大约10个人的详细信息,以上述格式构建“文本条件”,准备以AND OR格式复制和粘贴所有10个人,并将其粘贴到我用于根据这些人搜索记录的另一个系统中。获取该信息的系统每次搜索的字符数有限,因此每次搜索10个人是安全的选择。
理想情况下,我希望有一个无论数据集中有多少人都能构建标准的系统(数据列表中永远不会超过500人)并创建标准,准备以10人左右为一批进行复制和粘贴,以上述格式进行搜索,在其他系统中生成结果,粘贴下10个人,以此类推,第四个。这很难解释,我不确定我是在迷惑人们还是在讲道理。
到目前为止,我还没有真正得到太多,除了 Jmeter 板的能力,打开另一个工作表,并导入它的数据到活动 Jmeter 板。

8yoxcaq7

8yoxcaq71#

https://stackoverflow.com/a/60896244/692098的帮助下,将你在vba中构建的字符串复制到剪贴板,因为你似乎不想调整工作表并从那里复制,这应该是相当容易的。

Sub criteriaBuilder()
    Dim Lastrow As Long, cRow As Long
    Dim wbD As Workbook
    Dim ws As Worksheet
    Dim sCopy As String
    
    Set wbD = Workbooks("YourData.xlsx") 'adjust to your Data file
    Set ws = wbD.Worksheets("Data") 'and corresponding sheet
    
    Lastrow = ws.Range("A" & Rows.Count).End(xlUp).Row
    
    For i = 2 To Lastrow 'assuming you have a header
        sCopy = sCopy & ws.Range("A" & i).Value & " AND "
        sCopy = sCopy & ws.Range("B" & i).Value & " AND "
        If i Mod 10 = 1 Or i = Lastrow Then 'Copy every ten lines or when lastrow is reached
            sCopy = sCopy & ws.Range("C" & i).Value
            Clipboard sCopy
            MsgBox ("The 10 are copied, paste them in your other program and then hit OK to continue")
            sCopy = ""
        Else
            sCopy = sCopy & ws.Range("C" & i).Value & " OR "
        End If
    Next i
    MsgBox ("No more people left")
End Sub

Function Clipboard$(Optional s$)
    Dim v: v = s  'Cast to variant for 64-bit VBA support
    With CreateObject("htmlfile")
    With .parentWindow.clipboardData
        Select Case True
            Case Len(s): .setData "text", v
            Case Else:   Clipboard = .GetData("text")
        End Select
    End With
    End With
End Function

这就是你想要的吗
附言:下次试着给我们看看你有什么,以及你正在处理的工作表是什么样子的。

相关问题