【问题标题】:Sorting data from 1 column to 3将数据从 1 列排序到 3
【发布时间】:2013-06-04 01:58:30
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

    标签: vba excel libreoffice


    【解决方案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。

    我不太了解您的目标背后的“业务”逻辑,所以我只是在更正了现有代码后才开始,所以我不确定这是否会达到您的预期,但代码本身会工作。

    希望这会有所帮助。

    阿卜杜勒

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多