按不同行数的组sorting列表
我已经将损坏的链接search的结果导入Excel,现在我需要根据错误代码对结果进行sorting。 我无法弄清楚如何执行此操作,因为错误代码位于URL下方的行中,而不在其旁边的列中。 而且,一些url占用了不止一行。
以下是部分电子表格的屏幕截图:
我怎么会把所有的结果与404错误一起?
在A的左侧插入一列,然后填入一系列数字(1,2,3,…)。 现在按列Bsorting。select所有错误代码条目并将它们拖到列c(或其他空列)。 按列A中的数字顺序排列表。现在所有的东西都按顺序排列,错误代码是一个单独的列(C),您可以右键单击C1,然后select移动单元格。 列A可以被删除,并且可以通过URL进行sorting(尽pipe看起来像是清理了一些文本)。
下面你会发现一个VBA代码,可以满足你的需要。 由于我没有原始工作表,所以我创build了一个excel并放入了一些随机数据。 为我工作得很好。
Sub test() Dim row, rowDest, rowAux As Integer Dim source As Worksheet Dim dest As Worksheet 'Replace here by the name of the worksheet that contains the data Set source = Worksheets("Sheet1") 'This is the sheet where the modified data will be placed Set dest = Worksheets("Sheet2") 'Start row (source sheet) row = 1 'Start row (dest sheet) rowDest = 1 'This is an auxiliary variable used to fill the error code column rowAux = 0 'Go to the last line (column 1) of your source sheet and write the string !q 'This will be used as a flag to know where your data finish While (source.Cells(row, 1).Value <> "!q") If (InStr(source.Cells(row, 1).Value, "http") > 0) Then dest.Cells(rowDest, 1).Value = source.Cells(row, 1).Value If (rowAux = 0) Then rowAux = rowDest rowDest = rowDest + 1 ElseIf (InStr(source.Cells(row, 1).Value, "error code") > 0) Then While (dest.Cells(rowAux, 1).Value <> "") dest.Cells(rowAux, 2).Value = source.Cells(row, 1).Value rowAux = rowAux + 1 Wend rowAux = 0 End If row = row + 1 Wend End Sub
我的数据集和结果:
来源表:
Dest表单:
除非您可以在URL的同一行中获取错误代码,否则这将很难做到。 但是,您仍然可以通过在错误代码上使用SEARCHfunction来执行此操作。 这将发现404错误,但它不会给你在它下面的单元格的url。 因此,您需要一个函数来检查单元格下方的单元是否find了404代码。 然后你可以过滤“真”值并获得两行。
在A中创build一个新列,并使用下面的函数。
=IF(ISNUMBER(SEARCH("404",B1)),1,IF(A2=1,2,0))
滤除1和2的值。
=IF(ISNUMBER(SEARCH("v",A2)),"OK", "Not OK")
受限于某些限制(但它们不在您的Q中!)插入的ColumnA中的此公式可用于:
=INDEX(C1:C3,MATCH("*error code:*",C1:C3,0))
与插入的ColumnB中的=ROW()
一起(尽pipe可能在别处),并且同时被复制下来。
公式应该转换为值(复制ColumnsA:B,select性粘贴…,顶部的值),然后根据ColumnA和ColumnB进行sorting。 ColumnC中的空白行可能会被删除,而那些列中的错误代码也会被删除。