【问题标题】:How can I do a LESS in Excel?如何在 Excel 中做 LESS?
【发布时间】:2015-07-10 11:26:45
【问题描述】:

我有两个 excel 列,一个有 7000 行,一个有 600 行。

对于 600 中的每一个,如果它存在于 7000 中,我希望将其从列表中删除。因此,假设我的 600 个问题中有 200 个包含在 7000 中,我将留下一个包含 400 的列。我相信这将表示为 A / B,a 是 600 个句子的列表,B 是 7000 个。

我确信有一种简单的方法可以做到这一点,但我对 Excel 不熟悉,而且我的老板过去一个小时一直在对我大喊大叫,所以很难集中注意力!

任何帮助将不胜感激。我对任何语言或工具持开放态度。

谢谢

【问题讨论】:

  • 您可以为此使用 MATCH()。
  • @TimWilliams 我一直在研究这个函数,但我不知道它如何在第三列中打印正确的值。你能详细说明一下吗? :)
  • LibreOffice 标签的用途是什么?你是不是只是往墙上扔泥巴看什么会粘住?
  • @Jeeped 不,这是一个可以被两个程序打开的.file。我不介意解决方案适用于哪个。感谢您的回复:)
  • 可以用公式而不是宏来做到这一点,尽管它相当复杂。 this OpenOffice forum thread中有一个解释和示例文件

标签: excel csv excel-formula libreoffice vba


【解决方案1】:

如果列 A 是短列​​表,列 B 是长列表,那么试试这个宏:

Sub PurgeAList()
    Dim rA As Range, rB As Range, nA As Long, nB As Long
    Dim rc As Long, i As Long, v As Variant

    rc = Rows.Count
    nA = Cells(rc, "A").End(xlUp).Row
    nB = Cells(rc, "B").End(xlUp).Row
    Set rA = Range("A1:A" & nA)
    Set rB = Range("B1:B" & nB)

    For i = nA To 1 Step -1
        v = Cells(i, "A").Value
        If Application.WorksheetFunction.CountIf(rB, v) > 0 Then
            Cells(i, "A").Delete shift:=xlShiftUp
        End If
    Next i
End Sub

它将从出现在长列表中的短列表中删除项目。

【讨论】:

    【解决方案2】:

    如果您的 600 个问题在 A1:A600 中,而您的 7000 个问题在 D1:D7000 中,则在 B1 中输入:

    =COUNTIF($D$1:$D$7000,A1)
    

    然后填写。 不在较大列表中的问题将在该列中显示为 0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2014-09-03
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多