我写了一些非常简单的VBA(excel宏)代码来管理我的音频许可excel体验。该代码应该在第3列的excel工作表中查找,在其列中查找任何包含“ AMC”的代码,然后将行复制并粘贴到工作表2中,然后继续搜索整个excel文档。该代码非常简单,在停止正确运行之前就可以运行一次。它只采用最后一个AMC值,并将其放在工作表2上,而不是将其他5行的AMC放在其第3列值中。
请帮助!我会非常感激:)
-杰里米
VBA代码:
StaticJsonBuffer<300> JSONbuffer; //Declaring static JSON buffer
JsonObject& JSONencoder = JSONbuffer.createObject();
JSONencoder["val"] = data;
char JSONmessageBuffer[300];
JSONencoder.prettyPrintTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
HTTPClient http; //Declare object of class HTTPClient
http.begin(SERVER_IP); //Specify request destination
http.addHeader("Content-Type", "application/json"); //Specify content-type header
int httpCode = http.POST(JSONmessageBuffer); //Send the request
String payload = http.getString();
http.end();
delay(1000);
答案 0 :(得分:1)
您可以使用Instr
和Union
。
Union
非常有效,因为您将所有符合条件的范围存储在内存中,然后仅将一次写出到工作表中。与连续写出工作表相比,操作成本要低得多。 Instr
允许您使用vbBinaryCompare
,这意味着您要进行区分大小写的匹配,即仅匹配AC
而不匹配ac
。.Activate
,这也是不需要的昂贵操作。UsedRange
意味着您可能循环了比所需更多的行。您只想循环到工作表1列C的最后一个填充行,因为这是您要测试的列。因此,我使用.Cells(.Rows.Count, C").End(xlUp).Row
找到最后一行。Option Explicit
-研究原因!它将使您的VBA生活变得更加美好。代码:
Option Explicit
Sub CommandButton1_Click()
Dim lastRow As Long, sSht As Worksheet, tSht As Worksheet, loopRange As Range
Set sSht = ThisWorkbook.Worksheets("Sheet1")
Set tSht = ThisWorkbook.Worksheets("Sheet2")
With sSht
Set loopRange = .Range("C2:C" & .Cells(.Rows.Count, C").End(xlUp).Row)
End With
Dim rng As Range, unionRng As Range
For Each rng In loopRange
If InStr(1, rng.Value, "AC", vbBinaryCompare) > 0 Then
If Not unionRng Is Nothing Then
Set unionRng = Union(unionRng, rng)
Else
Set unionRng = rng
End If
End If
Next rng
If Not unionRng Is Nothing Then unionRng.EntireRow.Copy tSht.Cells(1, 1)
End Sub
答案 1 :(得分:0)
这应该可以解决您的问题:
If Worksheets("Sheet1").Cells(i, 3).Value = "AMC" Then
Worksheets("Sheet1").Rows(i).Copy
Worksheets("Sheet2").Activate
Worksheets("Sheet2").Cells(b + 1, 1).Select
b = b + 1
ActiveSheet.Paste
Worksheets("Sheet1").Activate
End If