Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Vba Excel数据从列到行_Vba_Excel_Row_Multiple Columns - Fatal编程技术网

Vba Excel数据从列到行

Vba Excel数据从列到行,vba,excel,row,multiple-columns,Vba,Excel,Row,Multiple Columns,我的数据如下图所示: 我需要(使用宏)排列数据,以便在仰角\方位角后带有数字的每一行都位于第一行,如图所示: 我有很多这样的数据行。也许有人能帮上忙?这也可以在不使用宏的情况下完成。 我假设数据所在的最后一列是第I列,行号是11。您希望填充第I列之后第11行中的所有单元格,即J11、K11。。。。值正好低于I11 您可以这样做,粘贴在J11中 J11=指数($I$11:$I$1000,第(B1)列,第1) 将公式拖动到行中,您将获得所需的输出这也可以在不使用宏的情况下完成。 我假设数据所在的

我的数据如下图所示:

我需要(使用宏)排列数据,以便在仰角\方位角后带有数字的每一行都位于第一行,如图所示:


我有很多这样的数据行。也许有人能帮上忙?

这也可以在不使用宏的情况下完成。 我假设数据所在的最后一列是第I列,行号是11。您希望填充第I列之后第11行中的所有单元格,即J11、K11。。。。值正好低于I11

您可以这样做,粘贴在J11中 J11=指数($I$11:$I$1000,第(B1)列,第1)
将公式拖动到行中,您将获得所需的输出

这也可以在不使用宏的情况下完成。 我假设数据所在的最后一列是第I列,行号是11。您希望填充第I列之后第11行中的所有单元格,即J11、K11。。。。值正好低于I11

您可以这样做,粘贴在J11中 J11=指数($I$11:$I$1000,第(B1)列,第1)
将公式拖过行,您应该会得到所需的输出

这是未测试的。你可以试试看。以下内容也可以用不同的方式书写

  Sub test1()
        Dim LastRow, DataCount, temp  As Double
        i = 1
        LastRow = 1

        Do While LastRow <> 0
            Range("A" & i).Select
            If ActiveCell.Value = "ELEVATION\AZIMUTH" Then
                'Cut all three row and paste
                DataCount = Application.WorksheetFunction.CountA(Range(i & ":" & i))
                Range("A" & ActiveCell.Row + 1, "I" & ActiveCell.Row + 1).Cut ActiveCell.Offset(0, DataCount)
                Range("A" & ActiveCell.Row + 2, "I" & ActiveCell.Row + 2).Cut ActiveCell.Offset(0, DataCount * 2)
                Range("A" & ActiveCell.Row + 3, "I" & ActiveCell.Row + 3).Cut ActiveCell.Offset(0, DataCount * 3)
            Else
                LastRow = Application.WorksheetFunction.CountA(Range("A" & i, "A" & i + 10))
            End If
            i = i + 1
        Loop

    End Sub
子测试1()
Dim LastRow,数据计数,温度为双精度
i=1
LastRow=1
在最后一行0时执行此操作
范围(“A”和i)。选择
如果ActiveCell.Value=“仰角\方位角”,则
'将所有三行剪切并粘贴
DataCount=Application.WorksheetFunction.CountA(范围(i&“:”&i))
范围(“A”&ActiveCell.Row+1,“I”&ActiveCell.Row+1)。剪切ActiveCell.Offset(0,数据计数)
范围(“A”&ActiveCell.Row+2,“I”&ActiveCell.Row+2)。剪切ActiveCell.Offset(0,数据计数*2)
范围(“A”&ActiveCell.Row+3,“I”&ActiveCell.Row+3)。剪切ActiveCell.Offset(0,数据计数*3)
其他的
LastRow=Application.WorksheetFunction.CountA(范围(“A”&i,“A”&i+10))
如果结束
i=i+1
环
端接头

这未经测试。你可以试试看。以下内容也可以用不同的方式书写

  Sub test1()
        Dim LastRow, DataCount, temp  As Double
        i = 1
        LastRow = 1

        Do While LastRow <> 0
            Range("A" & i).Select
            If ActiveCell.Value = "ELEVATION\AZIMUTH" Then
                'Cut all three row and paste
                DataCount = Application.WorksheetFunction.CountA(Range(i & ":" & i))
                Range("A" & ActiveCell.Row + 1, "I" & ActiveCell.Row + 1).Cut ActiveCell.Offset(0, DataCount)
                Range("A" & ActiveCell.Row + 2, "I" & ActiveCell.Row + 2).Cut ActiveCell.Offset(0, DataCount * 2)
                Range("A" & ActiveCell.Row + 3, "I" & ActiveCell.Row + 3).Cut ActiveCell.Offset(0, DataCount * 3)
            Else
                LastRow = Application.WorksheetFunction.CountA(Range("A" & i, "A" & i + 10))
            End If
            i = i + 1
        Loop

    End Sub
子测试1()
Dim LastRow,数据计数,温度为双精度
i=1
LastRow=1
在最后一行0时执行此操作
范围(“A”和i)。选择
如果ActiveCell.Value=“仰角\方位角”,则
'将所有三行剪切并粘贴
DataCount=Application.WorksheetFunction.CountA(范围(i&“:”&i))
范围(“A”&ActiveCell.Row+1,“I”&ActiveCell.Row+1)。剪切ActiveCell.Offset(0,数据计数)
范围(“A”&ActiveCell.Row+2,“I”&ActiveCell.Row+2)。剪切ActiveCell.Offset(0,数据计数*2)
范围(“A”&ActiveCell.Row+3,“I”&ActiveCell.Row+3)。剪切ActiveCell.Offset(0,数据计数*3)
其他的
LastRow=Application.WorksheetFunction.CountA(范围(“A”&i,“A”&i+10))
如果结束
i=i+1
环
端接头

这可以在vba中轻松完成,如果您知道如何编写宏,然后编写循环检查a列的
高程
,然后再次编写嵌套循环以根据需要移动第一行中的数据。让我们知道,如果你陷入困境,你会帮助你的。我不擅长自己写宏,我可以根据我的情况对工作宏进行一些更正:)因此,如果你能给我一些基本宏代码,我会解决它:)@Shirikanth你有多少记录像
高程
,数据固定在9个单元格/我正在使用合并宏从单独的txt文件收集数据。这是不同数量的重复数据。一部分是(A1:I20)。我需要把所有的数字排成一行。所以从一个部分我必须得到三行。我可以有很多像这样的部分,大约200或更多。是的,它被固定在9个细胞上@我已经发布了一个未经测试的代码,请尝试一下。您还可以将此代码添加到合并宏下面以获得所需的内容。这可以在vba中轻松完成,如果您知道如何编写宏,则可以编写循环以检查列a的
高程
,然后再编写嵌套循环以根据需要移动第一行中的数据。让我们知道,如果你陷入困境,你会帮助你的。我不擅长自己写宏,我可以根据我的情况对工作宏进行一些更正:)因此,如果你能给我一些基本宏代码,我会解决它:)@Shirikanth你有多少记录像
高程
,数据固定在9个单元格/我正在使用合并宏从单独的txt文件收集数据。这是不同数量的重复数据。一部分是(A1:I20)。我需要把所有的数字排成一行。所以从一个部分我必须得到三行。我可以有很多像这样的部分,大约200或更多。是的,它被固定在9个细胞上@我已经发布了一个未经测试的代码,请尝试一下。您也可以在merge宏下面添加此代码以获得所需的内容。这只需要将一列值添加到行中,我需要一行中的所有列值:)但谢谢,我是一个很好的公式,我相信有一天我可以使用它:)@user8441712您的意思是说,从B12到I50的所有值都应该完全存在吗?这可以通过=索引($B$12:$I$1000,四舍五入((B1-2列)/7,0)+1,MOD(B1-2,7列)+1)来实现。我假设您的数据有7列。因此,索引中的行号在每7个单元格后加上1,列索引从1迭代到7,当你从一个单元格移动到另一个单元格时,它只需要一个列值到一行,我需要一行中的所有列值:)但是,谢谢,我是一个很好的公式,我相信有一天我可以使用它:)@user8441712你的意思是说从say开始的所有值,B12到I50应该完全存在吗?这可以通过=索引($B$12:$I$1000,四舍五入((B1-2列)/7,0)+1,MOD(B1-2,7列)+1)来实现。我假设您的数据有7列。因此,索引中的行号在每7个单元格后追加1,列索引从1迭代到7,当您从一个单元格移动到另一个单元格时,如果数据