Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 按不同行数的组对列表排序_Excel_Sorting_Excel Formula_Worksheet Function_Vba - Fatal编程技术网

Excel 按不同行数的组对列表排序

Excel 按不同行数的组对列表排序,excel,sorting,excel-formula,worksheet-function,vba,Excel,Sorting,Excel Formula,Worksheet Function,Vba,我已将断开链接的搜索结果导入Excel,现在需要根据错误代码对结果进行排序。我不知道该怎么做,因为错误代码在URL下面的一行,而不是它旁边的一列。此外,一些URL占用多行 以下是电子表格部分的屏幕截图: 我将如何将带有错误404的所有结果分组在一起 在a的左边插入一列,并用数字序列(1,2,3,…)填充。现在按B列排序。选择所有错误代码条目并将它们拖到c列(或其他空列)。按照A列中的数字顺序绘制工作表。现在,所有内容都已排序,错误代码是一个单独的列(C),您可以右键单击C1,然后选择shift

我已将断开链接的搜索结果导入Excel,现在需要根据错误代码对结果进行排序。我不知道该怎么做,因为错误代码在URL下面的一行,而不是它旁边的一列。此外,一些URL占用多行

以下是电子表格部分的屏幕截图:


我将如何将带有错误404的所有结果分组在一起

在a的左边插入一列,并用数字序列(1,2,3,…)填充。现在按B列排序。选择所有错误代码条目并将它们拖到c列(或其他空列)。按照A列中的数字顺序绘制工作表。现在,所有内容都已排序,错误代码是一个单独的列(C),您可以右键单击C1,然后选择shift cells up。列A可以删除,您可以按URL进行排序(尽管看起来您稍微整理了一下文本)。

在列A的左侧插入一列,并用数字序列(1、2、3,…)进行填充。现在按B列排序。选择所有错误代码条目并将它们拖到c列(或其他空列)。按照A列中的数字顺序绘制工作表。现在,所有内容都已排序,错误代码是一个单独的列(C),您可以右键单击C1,然后选择shift cells up。列A可以删除,您可以按URL进行排序(尽管看起来您对文本进行了一些清理)。

除非您可以在URL所在的行中获得错误代码,否则这将很难做到。但是,您仍然可以通过对错误代码使用搜索功能来执行此操作。这将找到404错误,但它不会在它下面的单元格中提供URL。因此,您需要一个函数来检查其单元格下的单元格是否找到404代码。然后,您可以过滤“true”值并获得两行

在中创建一个新列,并使用下面的函数

=IF(ISNUMBER(SEARCH("404",B1)),1,IF(A2=1,2,0))
向下过滤1和2个值

基于和功能的解决方案:

=IF(ISNUMBER(SEARCH("v",A2)),"OK", "Not OK")

这将是很难做到的,除非您可以获得与URL位于同一行的错误代码。但是,您仍然可以通过对错误代码使用搜索功能来执行此操作。这将找到404错误,但它不会在它下面的单元格中提供URL。因此,您需要一个函数来检查其单元格下的单元格是否找到404代码。然后,您可以过滤“true”值并获得两行

在中创建一个新列,并使用下面的函数

=IF(ISNUMBER(SEARCH("404",B1)),1,IF(A2=1,2,0))
向下过滤1和2个值

基于和功能的解决方案:

=IF(ISNUMBER(SEARCH("v",A2)),"OK", "Not OK")

根据一些限制条件(但它们不在您的Q中!),插入列A中的此公式可能用于:

=INDEX(C1:C3,MATCH("*error code:*",C1:C3,0))  
以及插入的列B中的
=ROW()
(虽然可以在其他位置),并同时向下复制


应将公式转换为值(复制列A:B,粘贴特殊…,顶部的值),然后根据列A和列B进行排序。列C中的空白行以及该列中带有错误代码的行可能会被删除。

受某些约束(但它们不在您的Q中!)插入列A中的此公式可能用于:

=INDEX(C1:C3,MATCH("*error code:*",C1:C3,0))  
以及插入的列B中的
=ROW()
(虽然可以在其他位置),并同时向下复制


应将公式转换为值(复制列A:B,粘贴特殊…,顶部的值),然后根据列A和列B进行排序。列C中的空白行以及该列中带有错误代码的行可能会被删除。

在下面,您将找到一个VBA代码,可以执行您需要的操作。由于我没有原始的工作表,我创建了一个excel并放置了一些随机数据。对我来说很好

子测试()
Dim row、rowDest、rowAux作为整数
将源设置为工作表
将dest设置为工作表
'此处替换为包含数据的工作表的名称
设置来源=工作表(“表1”)
'这是将放置修改数据的工作表
Set dest=工作表(“表2”)
'起始行(源工作表)
行=1
'起始行(目标工作表)
rowDest=1
'这是一个辅助变量,用于填充错误代码列
rowAux=0
'转到源工作表的最后一行(第1列)并写入字符串!Q
'这将用作一个标志,以了解数据在何处完成
While(source.Cells(第1行).Value“!q”)
如果(InStr(source.Cells(行,1.Value,“http”)>0),那么
dest.Cells(rowDest,1).Value=source.Cells(row,1).Value
如果(rowAux=0),则rowAux=rowDest
rowDest=rowDest+1
ElseIf(InStr(source.Cells(第1行).Value,“错误代码”)>0)然后
While(目标单元格(rowax,1.Value“”)
dest.Cells(rowax,2).Value=source.Cells(row,1).Value
rowAux=rowAux+1
温德
rowAux=0
如果结束
行=行+1
温德
端接头
我的数据集和结果:

资料来源表:

目的表:


下面是一个VBA代码,可以满足您的需要。由于我没有原始的工作表,我创建了一个excel并放置了一些随机数据。对我来说很好

子测试()
Dim row、rowDest、rowAux作为整数
将源设置为工作表
将dest设置为工作表
'此处替换为包含数据的工作表的名称
设置来源=工作表(“表1”)
'这是将放置修改数据的工作表
Set dest=工作表(“表2”)
'起始行(源工作表)
行=1
'起始行(目标工作表)
rowDest=1
'这是一个辅助变量,用于填充错误代码列
rowAux=0
'转到源工作表的最后一行(第1列)并写入字符串!Q
'这将用作一个标志,以了解数据在何处完成
While(source.Cells(第1行).Value“!q”)
如果(InStr(source.Cells(行,1.Value,“http”)>0),那么