Excel VBA 根据某些遭遇删除行

Posted

技术标签:

【中文标题】Excel VBA 根据某些遭遇删除行【英文标题】:Excel VBA deleting rows based on certain encounters 【发布时间】:2016-08-28 01:33:47 【问题描述】:

我有一个 Excel 表格,其中包含数值和文本。 我想要的是删除以“站”开头的完整行 直到遇到“可沉淀”。 我对此很陌生,并尝试使用可用的在线代码,但未能成功。

例如数据如下:

PRES    HGHT   TEMP   DWPT   RELH   MIXR   DRCT   SKNT   THTA   THTE   THTV
hPa      m      C      C      %    g/kg    deg   knot     K      K      K 
---------------------------------------------------------------------------
1002.0    14   28.4   25.3    83   20.78     45      2  301.4  363.0  305.1
1000.0    34   28.2   25.2    84   20.69     45      2  301.4  362.7  305.1
969.9    304   25.6   23.6    89   19.36    330      7  301.4  358.7  304.9
940.0    581   23.0   22.0    94   18.07    330      9  301.4  354.9  304.7
937.0    609   22.8   21.8    94   17.84    330      9  301.5  354.3  304.7
920.0    769   21.8   20.3    91   16.59    335     10  302.1  351.2  305.1
904.8    914   21.8   18.9    84   15.47    340     11  303.5  349.6  306.3
850.0   1458   21.8   13.8    60   11.80     25     11  309.0  345.1  311.2
795.0   2039   21.8    8.8    43    9.02     34      8  314.9  343.4  316.6
786.3   2133   21.1    8.1    43    8.66     35      7  315.1  342.6  316.8
700.0   3125   13.2    0.2    41    5.58     79      9  317.1  335.2  318.1
685.0   3307   11.6   -1.4    40    5.07     87      9  317.3  333.8  318.2
623.0   4090    2.6   -1.2    76    5.66    122     10  315.7  333.9  316.8
600.0   4394    0.8   -3.9    71    4.80    137     11  317.0  332.7  317.9
590.0   4529    0.0   -4.1    74    4.81    143     11  317.6  333.3  318.5
577.0   4708   -1.1   -4.6    77    4.74    151     11  318.3  333.9  319.2
549.0   5108    0.5   -1.1    89    6.47    170     12  324.8  346.3  326.1
500.0   5850   -7.3  -11.9    70    3.09    205     13  324.1  334.7  324.7
484.5   6096   -7.0  -17.1    44    2.08    220     13  327.4  334.8  327.9
474.0   6267   -6.7  -20.7    32    1.56    223     13  329.8  335.5  330.1
457.0   6552   -7.5  -21.5    32    1.51    228     13  332.3  337.8  332.6
400.0   7580  -12.7  -26.7    30    1.08    245     12  338.4  342.5  338.6
357.0   8444  -16.5  -28.5    35    1.03    174     10  344.5  348.5  344.7
300.0   9730  -26.3  -37.3    35    0.52     65      6  348.2  350.3  348.3
250.0  11020  -36.5  -46.5    35    0.24     85      5  351.7  352.7  351.7
200.0  12530  -49.1  -58.1    34    0.07    135      8  354.9  355.2  354.9
170.0  13577  -57.1                                     358.4         358.4

台站信息和探测指数

                         Station identifier: VABB
                             Station number: 43003
                           Observation time: 730602/0000
                           Station latitude: 19.11
                          Station longitude: 72.84
                          Station elevation: 14.0
                            Showalter index: -2.44
                               Lifted index: -7.32
    LIFT computed using virtual temperature: -8.10
                                SWEAT index: 224.58
                                    K index: 29.90
                         Cross totals index: 21.10
                      Vertical totals index: 29.10
                        Totals totals index: 50.20
      Convective Available Potential Energy: 1252.58
             CAPE using virtual temperature: 1440.95
                      Convective Inhibition: -0.01
             CINS using virtual temperature: 0.00
                   Level of Free Convection: 943.36
             LFCT using virtual temperature: 944.28
                     Bulk Richardson Number: 237.98
          Bulk Richardson Number using CAPV: 273.77
  Temp [K] of the Lifted Condensation Level: 296.48
Pres [hPa] of the Lifted Condensation Level: 944.28
     Mean mixed layer potential temperature: 301.39
              Mean mixed layer mixing ratio: 19.57
              1000 hPa to 500 hPa thickness: 5816.00
Precipitable water [mm] for entire sounding: 52.16

----------------------------------------------------------------------------
 PRES    HGHT   TEMP   DWPT   RELH   MIXR   DRCT  SKNT   THTA   THTE   THTV
 hPa      m      C      C       %    g/kg    deg  knot     K      K      K 
----------------------------------------------------------------------------
1000.0    14   32.4   26.4    71   22.27    270   12   305.6   372.9   309.6
967.9    304   25.8   21.9    79   17.42    310   10   301.8   353.4   304.9
961.0    368   24.4   20.9    81   16.48    310   10   300.9   349.6   303.9
935.0    609   26.1   20.2    70   16.27    310   11   305.0   353.9   308.0
933.0    628   26.2   20.2    70   16.25    310   11   305.3   354.2   308.3
903.0    914   25.2   18.3    65   14.88    315    7   307.2   352.4   310.0

【问题讨论】:

我不太明白你想做什么。您说“将整个行从站删除到可沉淀”,但您的示例数据不包含任何站?此外,您应该向我们展示您的尝试。请参阅the help center,了解有关提问时良好做法的更多指导。 这毫无意义。有很多数据,其中没有一个包含您要查找的内容。这看起来像是在学校给你的一个问题,你自己都不了解。如果您可以发布相关数据和您迄今为止尝试过的示例,将会更有帮助。这样一来,如果我们无法从数据帖子中看出您正在尝试做什么,您的代码应该会给出更好的指示。 【参考方案1】:

此代码将在发现“可沉淀”作为第一列中的第一个单词时从下往上开始删除行。当它找到单词“Station identifier:”作为第一个单词时,它将停止。

Sub Main()

Dim rowCount As Long
Dim counter As Long
Dim delete As Boolean
Dim s As String

rowCount = Cells(Rows.Count, 1).End(xlUp).Row

For counter = rowCount To 1 Step -1

    s = Cells(counter, 1).Value

    If Left(s, InStr(s, " ")) = "Precipitable" Then    
        delete = True        
    End If

    If Left(s, InStr(s, " ")) = "Station identifier:" Then    
        deleteRow (counter)        
        delete = False        
    End If

    If (delete) Then    
        deleteRow (counter)    
    End If    

Next counter

End Sub
'------------
Sub deleteRow(counter As Long)
    Cells(counter, 1).EntireRow.delete
End Sub

【讨论】:

以上是关于Excel VBA 根据某些遭遇删除行的主要内容,如果未能解决你的问题,请参考以下文章

R语言怎么按条件删除某些行?

Excel 2010 VBA:复制行,根据某列上的值动态选择它们

根据搜索键 VBA 删除行

EXCEL VBA:根据值范围格式化现有数字单元格

Excel根据某一列数据,自动分成多张表格

Excel VBA宏根据日期选择数据并将其移动到新选项卡