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

excel数据拆分/分配

excel数据拆分/分配,excel,vba,Excel,Vba,我在excel中得到了一个输入文件,它只会在“M2”列下。将输入文件放置为如下所示: ru_utime 0.060 ru_stime 0.140 ru_maxrss 0 ru_ixrss 0 ru_ismrss 0 ru_idrss 0

我在excel中得到了一个输入文件,它只会在“M2”列下。将输入文件放置为如下所示:

ru_utime     0.060              
ru_stime     0.140              
ru_maxrss    0                          
ru_ixrss     0                          
ru_ismrss    0                          
ru_idrss     0                          
ru_isrss     0                          
ru_minflt    4124                       
ru_majflt    0                          
ru_nswap     0                          
ru_inblock   0                          
ru_oublock   0                          
ru_msgsnd    0                          
ru_msgrcv    0                          
ru_nsignals  0                          
ru_nvcsw     47174                      
ru_nivcsw    4347                       
==================================================
然后以相同的格式重复大约1000多次

正如您所看到的,它在同一列中有两个信息位,然后下一个信息串由=== 我想做的是忽略每一位的标题,把右边的信息移到彼此下面的不同列中

我要做的是读入文件并将所有信息放在不同的列accross下,如ru_utime:0.060

所以所有的数据都在“M2”下,我想获取相应的标题信息,并将它们移动到像S2、T2、U2这样的位置,然后当它点击===========为下面的下一个做。如果这对任何人都有意义的话,我将非常感谢你的帮助

目的是通过点击按钮自动移动,谢谢

增加:

Sub incorperate()
sn = Split(Join(Application.Transpose(Sheets("sheet2").Cells(1).CurrentRegion.Columns(1)), "|"), String(62, "=") & "|")
With Sheets("sheet1").Cells(1).CurrentRegion
st = .Rows(1).Offset(.Rows.Count).Resize(UBound(sn) + 1)
End With

For j = 0 To UBound(sn)
sq = Split(sn(j), "|")
For jj = 0 To UBound(sq) - 1
  st(j + 1, jj + 1) = Split(sq(jj))(UBound(Split(Trim(sq(jj)))))
Next
Next

Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(st), UBound(st, 2)) = st
End Sub

是的,这很容易实现。你试过什么了吗?我一直在找,但是我不知道在标题移到列t之后如何说什么,然后移动所有标题信息,直到你点击===然后递增,然后再做一次想用不同的方法尝试一下吗(有很多方法)?使用
.Find
.FindNext
搜索“=======”,然后设置要复制的范围。然后,您可以使用宏记录
Copy
Pastespecial-Transpose
的工作方式?将这两段代码组合在一起将为您提供所需的内容。对于
.Find
.FindNext
,请参阅此链接嘿,希德,很抱歉我在周末离开之前没有回复,由于这里的限制,我无法在wordpress上查看,但我在上面添加了一些代码,这些代码应该以该格式将信息从工作表中提取到工作表中,并按照我希望的方式将其放入工作表1中,它开始工作了,现在突然停止了,有什么想法吗?拆分行上的下标超出范围是可以轻松实现的。你试过什么了吗?我一直在找,但是我不知道在标题移到列t之后如何说什么,然后移动所有标题信息,直到你点击===然后递增,然后再做一次想用不同的方法尝试一下吗(有很多方法)?使用
.Find
.FindNext
搜索“=======”,然后设置要复制的范围。然后,您可以使用宏记录
Copy
Pastespecial-Transpose
的工作方式?将这两段代码组合在一起将为您提供所需的内容。对于
.Find
.FindNext
,请参阅此链接嘿,希德,很抱歉我在周末离开之前没有回复,由于这里的限制,我无法在wordpress上查看,但我在上面添加了一些代码,这些代码应该以该格式将信息从工作表中提取到工作表中,并按照我希望的方式将其放入工作表1中,它开始工作了,现在突然停止了,有什么想法吗?分割线上的下标超出范围
Sub move()
Dim x, y(), i&, j&, k&, s

x = Range("S1", Cells(1, Columns.Count).End(xlToLeft)).Value
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 1 To UBound(x, 2)
        .Item(x(1, i)) = i
    Next i

    x = Application.Trim(Range("M2", Cells(Rows.Count, "M").End(xlUp)).Value)
    ReDim y(1 To UBound(x), 1 To .Count): j = 1

    For i = 1 To UBound(x)
        If InStr(x(i, 1), "==") = 0 Then
            s = Split(x(i, 1))
            If .Exists(s(0)) Then
                k = .Item(s(0)): y(j, k) = s(UBound(s))
            End If
        Else
            j = j + 1
        End If
    Next i
End With

[s2].Resize(j, UBound(y, 2)).Value = y()
End Sub