我在桌面上得到了以下数据,我想创建一个宏,它将所有值组合在一起, A B C D E
1 Line Item Quantity Part Number Description
2 Line 1 Fan Motor 0 0 0
3 Line 2 Fan #N/A #N/A #N/A
4 Line 3 Fan guard 0 0 0
5 Line 4 Pump 0 0 0
6 Line 5 Access door 0 0 0
7 Line 6 Nozzle grommet 0 0 0
8 Line 7 Nozzle 0 0 0
9 Line 20 SST tube 0 0 0
10 Line 21 Flanges 2 205024M2P HDGFLG
11 Line 22 Part 11 #N/A #N/A #N/A
12 Line 23 Part 12 #N/A #N/A #N/A
16 Line 29 Terminal box 1 31123800P TERMINAL BOX
14 Line 25 Check Valve #N/A #N/A #N/A
15 Line 26 Buttefly Valve #N/A #N/A #N/A
17 Line 30 Solenoid valve 1 31601700P SOLENOID VALVE 1 PER8
18 Line 31 Coil 1 31602000P COIL FOR SOL. VALVE
位于底部。请协助。
#N/A
我最初使用下面的代码删除值为Sub GroupRows()
Dim rownum As Long
For rownum = 1 To 1000
If Cells(rownum, 3).Text = "#N/A" Then
Rows(rownum).Delete
Next rownum
Cells(rownum, 3).Activate
End Sub
public void NewMethod(string s1, string s2, string s3, string s4)
{
string[] nonEmpty = new string[] { s1, s2, s3, s4 }.Where(s => !string.IsNullOrEmpty(s)).ToArray();
if (nonEmpty.Length == 4)
{
oldmethod(s1, s2, s3, s4);
}
else if (nonEmpty.Length == 3)
{
oldmethod(s1, s2, s3);
}
else
{
// unexpected, fix or throw
}
}
但是
"编译错误:下一个没有For"
弹出错误信息,事情是我对VBA还是新手,还有一些我还不太了解的事情,所以我不知道我的编码是否合适。
答案 0 :(得分:0)
如果您使用上次使用的行而不是固定的最大行数,那么这就是您的代码的样子。
Sub GroupRows()
Dim iRow As Long, lastRow As Long
Dim ws As Worksheet
Set ws = Worksheets("MySheetName") 'qualify your sheet
lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row 'find last used row
For iRow = lastRow To 1 Step -1 'run from last used row backwards to row 1
If ws.Cells(iRow, 3).Text = "#N/A" Or _
ws.Cells(iRow, 4).Text = "#N/A" Then
ws.Rows(iRow).Delete
End If
Next iRow
ws.Cells(iRow, 3).Activate
End Sub
您的代码缺少End if
,您应始终使用Cells
或Range
等工作表来限定ws.Cells
或ws.Range
。