将数据从1列排序到3列

时间:2013-06-04 01:58:31

标签: excel vba excel-vba libreoffice

我正在尝试在libre-office中使用宏来查找单元格中的字符串 - 如果所述单元格包含该字符串,程序应该转到它下面的单元格,剪切该单元格的内容并粘贴它进入下一列然后再往前走一排,切下那些内容,然后将它们放在下一列之后。

因此,如果A1包含所述字符串,则该脚本应转到A2,剪切该单元格并将其内容粘贴到B1,转到A3剪切这些内容将这些内容粘贴到C1,然后检查A4

希望这是有道理的。到目前为止我得到的是:

Sub Neuorganisieren
name = "check"
    If find(". Fr" ,A1,0)>1 then
        Selection.Offset(1, 0).Select
        cut
        Selection.Offset(-1, 1).Select
        paste
        Selection.Offset(2, -1).Select
        cut
        Selection.Offset(-2, 2).Select
        paste
        MsgBox ("found it")
    Else
        MsgBox ("no")
    End If
End Sub

但是,我不断收到未定义子过程/函数过程的错误。

1 个答案:

答案 0 :(得分:1)

试试这个:

Sub Neuorganisieren()
Name = "check"
    If InStr(Range("A1").Value, ". Fr") > 0 Then
        Selection.Offset(1, 0).Select
        Selection.Cut
        Selection.Offset(-1, 1).Select
        Selection.Paste
        Selection.Offset(2, -1).Select
        Selection.Cut
        Selection.Offset(-2, 2).Select
        Selection.Paste
        MsgBox ("found it")
    Else
        MsgBox ("no")
    End If
End Sub
  1. InStr检查该值是否存在于A1的内容中的任何位置。如果是,它将启动if语句的其余部分。

  2. 您无法自行剪切和粘贴。在这种情况下,您必须有一个对象将其应用于选择。所以我们使用Selection.Cut而不仅仅是Cut。

  3. 我不太了解你的目标背后的“业务”逻辑,所以我只是纠正了现有的代码,所以我不确定这是否会按你的意愿行事,但代码本身会工作

    希望这有帮助。

    阿都