使用Excel返回相同查找值的唯一值

时间:2017-05-22 20:11:01

标签: excel vba excel-vba vlookup

我正在尝试使用VLookup匹配"购买号码"特定的"发票编号"。为了做到这一点,我有几个关于购买的标识符,我把它放在一起以提出一个特殊的" Concat ID"。然后,我有一个发票号码列表,它也有相同的标识符列表,以创建相同的" Concat ID'。

我遇到的问题是标识符集不是唯一的(也就是购买10台计算机可能每年多次发生,因此它多次出现在我的列表中)。因此,当我使用Vlookup匹配2个ID时,每次找到Concat ID时,它总是给我相同的购买编号(这只是该Concat ID的第一次出现)。

由于没有其他数据可以进行匹配(因为发票日期和购买日期并不总是相同的日期或甚至彼此接近),我只是想确保每个发票编号都有唯一的购买编号

我不确定它是否可行,但我希望能够执行vlookup然后跳到下次找到Concat ID时,不允许重复,但是没有重复。对我来说是可行的。因为这是一个16000行的文件,所以非常感谢任何见解。

我确定这不是最明确的解释,因此我附上了2个示例的屏幕截图,以防任何人有任何见解。我一直在使用一个简单的VLookup,但我愿意尝试VBA或每个人都有的任何其他建议。一如既往,感谢Stack社区提前获取任何帮助/见解!

购买信息

Purchase Info

尝试与发票信息匹配

Attempted Matchup with Invoice Info

2 个答案:

答案 0 :(得分:2)

我仍然不确定您对ConcatID购买号码的期望,但是要返回与您的特定ConcatID相符的购买号码,这些号码是按照您在问题中描述的方式生成的,并且"跳过到下一个"在相同的ConcatID的情况下,您可以执行以下操作;

  • 请注意,我使用原始数据创建了一个表,并使用了结构化引用。与引用整个列相比,这样可以处理更少量的数据,并且在添加/删除行时也会自动调整范围
  • 另请注意,如果您的表格从第1行开始,则需要在公式中进行调整以解决此问题。
import sys
from PyQt4 import QtGui , QtCore

class Viewer(QtGui.QMainWindow):  
    def __init__(self, parent = None):
        super(Viewer, self).__init__(parent) 
        self.centralwidget = QtGui.QWidget(self)
        self.setCentralWidget(self.centralwidget)
        layout1 = QtGui.QHBoxLayout()
        self.centralwidget.setLayout(layout1)

        l = QtGui.QLabel()
        l.setPixmap(QtGui.QPixmap("folder.png"))
        text = QtGui.QTextEdit("Un fichier")

        element = QtGui.QWidget(self) 
        layout2 = QtGui.QVBoxLayout()
        element.setLayout(layout2)
        layout2.addWidget(l)
        layout2.addWidget(text)
        layout1.addWidget(element)

app = QtGui.QApplication(sys.argv)
viewer = Viewer()
viewer.show()
sys.exit(app.exec_())

并根据需要填写

enter image description here

答案 1 :(得分:1)

我有一个非常愚蠢的解决方案,但也许会有所帮助。

使用此公式为每行创建唯一ID。它将计算表中先前使用的特定Concat ID的次数,然后将其追加到最后。您可以使用Concat ID Unique中的VLookup来获取正确的Purchase Number

=D2 & "_" & (COUNTIF(D$1:D1, "=" & D2))

enter image description here