Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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_Excel Formula_Vba - Fatal编程技术网

Excel:数据透视处理-从单列提取到多列

Excel:数据透视处理-从单列提取到多列,excel,excel-formula,vba,Excel,Excel Formula,Vba,我有一个需要格式化处理的值列表,数据的格式不适合它的当前形式 这些值当前的格式如下: 记录太多,无法手动尝试此操作。使用公式或VBA自动化流程的最佳方法是什么 编辑:C3:C4中的值针对工作表中的每组记录显示。它们下面的单元格数量可以从1到3000不等 谢谢你的帮助 编辑:蒂姆,你帮了我很大的忙,我非常感谢你。但是,由于某种原因,编辑后的版本不起作用。在任何情况下,我都对其进行了非常基本的修改,以循环并清空我不希望标记的单元格值。再次感谢 Sub Tester() Const STATUS_

我有一个需要格式化处理的值列表,数据的格式不适合它的当前形式

这些值当前的格式如下:

记录太多,无法手动尝试此操作。使用公式或VBA自动化流程的最佳方法是什么

编辑:C3:C4中的值针对工作表中的每组记录显示。它们下面的单元格数量可以从1到3000不等

谢谢你的帮助

编辑:蒂姆,你帮了我很大的忙,我非常感谢你。但是,由于某种原因,编辑后的版本不起作用。在任何情况下,我都对其进行了非常基本的修改,以循环并清空我不希望标记的单元格值。再次感谢

Sub Tester()

Const STATUS_FLAG As String = "status code:*"

Dim v1, v2
Dim c As Range
Dim sht As Worksheet

    Set sht = ActiveSheet
    Application.ScreenUpdating = False
    For Each c In sht.Range(sht.Range("C1"), sht.Cells(Rows.Count, 3).End(xlUp))
        If c.Value Like STATUS_FLAG Then
            v1 = c.Offset(-2, 0)
            v2 = c.Offset(-1, 0)
        ElseIf c.Value Like "http:*" Then
            c.Offset(0, -2).Value = v1
            c.Offset(0, -1).Value = v2
        End If
        If c.Value Like STATUS_FLAG Then
            c.Offset(-2, -2).Value = ""
            c.Offset(-2, -1).Value = ""
            c.Offset(-1, -2).Value = ""
            c.Offset(-1, -1).Value = ""
        End If
    Next c
    Application.ScreenUpdating = True

End Sub  

编辑:不填写“源”路径(v1、v2)旁边的内容


您期望的格式是什么?@nutsch评论中的+1。请在之前的之外,在之后发布一个的屏幕截图,我们可以更轻松地提供帮助。谢谢您的提问。原始格式的数据在A列和B列中没有值,需要我在相应位置引用的单元格值。我使用了单元格引用,因为这些值可能令人困惑——如果有帮助的话,我下次会在两张图片中发布它。我希望这能让事情变得更清楚,但如果不清楚,请告诉我。我想你需要VBA。到目前为止你尝试了什么?Tim非常感谢你(我做了一个小改动-'c.Offset(0,-1).Value=v2'-但它工作得非常出色。我对VBA还没有足够的信心来快速编写这些内容,所以我一直在尝试用一个公式来复制它,这被证明是困难的。它是针对正在粘贴的URL进行录制的,但我确信我能找到删除这些行的方法。再次感谢您的帮助-非常感谢迟到了。编辑了我的答案来解决这个问题。
Sub Tester()

Const STATUS_FLAG As String = "Status code:*"

Dim v1, v2
Dim c As Range
Dim sht As Worksheet

    Set sht = ActiveSheet
    Application.ScreenUpdating = False
    For Each c In sht.Range(sht.Range("C1"), sht.Cells(Rows.Count, 3).End(xlUp))
        If Len(c.Value)=0 Then
            'reset on blank row
            v1=""
            v2=""
        ElseIf c.Value Like STATUS_FLAG Then
            v1 = c.Offset(-2, 0)
            v2 = c.Offset(-1, 0)
        ElseIf c.Value Like "http:*" and Len(v1)>0 Then
            c.Offset(0, -2).Value = v1
            c.Offset(0, -1).Value = v2
        End If
    Next c
    Application.ScreenUpdating = True

End Sub