我有一些代码多年来一直对我有效。它从其他文件搜索并导入数据。
=IF(ISERROR(MATCH(1,INDEX((INT('November-2017.csv'!A$2:A$10000)=A107925)*('November-2017.csv'!L$2:L$10000=K107925),),0)),"",INDEX('November-2017.csv'!P$2:P$100000,MATCH(1,INDEX((INT('November-2017.csv'!A$2:A$10000)=A107925)*('November-2017.csv'!L$2:L$10000=K107925),),0)))
我所要做的就是将公式复制到单元格中,更改文件名和相关的列和/或行引用,并将数据导入到该单元格中;然后我直接将其复制并粘贴到目标列的下方,然后导入数据。有时我必须增加范围,因为某些源文件具有超过10000行。数据总是导入到具有10个左右选项卡的同一文件中。为避免文件始终要求更新,我复制了每一列,然后将数据作为值粘贴回去。我只将代码留在顶部的每一列中,因此在需要时可以方便地进行复制。
但是我今天一直试图将其做到一个新文件中,并且根本无法导入任何文件。代码未更改;仅目标文件。新的目标文件是Excel文件.xls而不是.csv文件,但看不到有任何关系。源文件少于10000行,这一切都很好;我要粘贴的单元格是目标文件中的第107924行。日期是A列,并且完全匹配,源文件中的名称在L列中,目标文件中的名称是K列;他们也都匹配。我需要的数据在源文件的P列中。因此,对我来说一切都很好,并且如果我将数据导入到我一直导入的文件中,它仍然可以正常工作,但是新的目标单元格保持空白。
当我尝试将代码粘贴到我大部分时间都在使用的文件中并更改相关的列和行引用时,它可以正常工作。
=IF(ISERROR(MATCH(1,INDEX((INT('November-2017.csv'!A$2:A$10000)=A3)*('November-2017.csv'!L$2:L$10000=D3),),0)),"",INDEX('November-2017.csv'!P$2:P$10000,MATCH(1,INDEX((INT('November-2017.csv'!A$2:A$10000)=A3)*('November-2017.csv'!L$2:L$10000=D3),),0)))
唯一的区别似乎是在检查日期的行中(新文件的日期在A107925和A3中)和在列和行中检查名称的人(新文件是K107925对D3)。
任何帮助都乐意接受,因为它正在使我脑筋急转弯。
欢呼
Shane