复制列(垂直)选择以反向粘贴行(水平)

时间:2018-08-14 07:26:07

标签: excel vba

我正在寻找将列数据转置为行(一个接一个)。

我使用了以下代码,但由于数据具有空格,因此无法正常工作。

Sub RUN_MACRO()

Range("A1").Select
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlDown)).Select

Selection.Copy
Range("J2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
 Range("A6").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("J3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
Range("A1").Select
End Sub

下面是输入和输出的屏幕截图。

输入数据
Input Data



寻找以下输出:
enter image description here

2 个答案:

答案 0 :(得分:1)

假定包含数据的工作表称为Sheet1,因为您没有提供很多有用的信息。

SharedPreferences preferences = getSharedPreferences("preferences", Context.MODE_PRIVATE);

button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            preferences.edit().putLong("timestamp", System.currentTimeMillis()).apply();
            //some other logic
            button.setVisibility(View.INVISIBLE);
        }
    });

if ((preferences.getLong("timestamp", 0) + 60000) == System.currentTimeMillis()) {
        button.setVisibility(View.VISIBLE);
    }

这应该可以解决问题。已针对动态操作进行了编辑。

答案 1 :(得分:1)

即使您的一个字段中没有数据,或者您不小心留下了更多的空格,这也将起作用。

Sub test3()

Dim rng As Range

Application.ScreenUpdating = False
Set rng = Columns("A:A").SpecialCells(xlCellTypeConstants)
    For i = 1 To rng.Areas.Count
        rng.Areas(i).Copy
        Range("C" & i + 1).PasteSpecial xlPasteAll, Transpose:=True
    Next i
Set rng = Nothing
Application.ScreenUpdating = True

End Sub