klpocska 发表于 2022-7-6 12:40:04

如何在文件中查找(C S V)

我有一个大矩形和许多小矩形。
 
我想找到合适的人选。csv文件,这一个小矩形的文件名,这是在大矩形(左下角点->右上角点坐标范围)。
 
示例:
 
大矩形:
 
左下点:848235.6561446578.4652
右上点:849267.9715447056.4045
 
 
CSV文件:
 
柱:
1、小矩形文件名
2、小矩形左下点X坐标
3、小矩形左下点Y坐标
4、小矩形右下角点X坐标
5、小矩形右下角点Y坐标
6、小矩形右上角点X坐标
7、小矩形右上角点Y坐标
8、小矩形左上角点X坐标
9、小矩形左上点Y坐标
 
文件1;848375.0000;446750.0000;848750.0000;446750.0000;848750.0000;447000.0000;848375.0000;447000.0000;
文件2;848375.0000;446500.0000;848750.0000;446500.0000;848750.0000;446750.0000;848375.0000;446750.0000;
文件3;848750.0000;447000.0000;849125.0000;447000.0000;849125.0000;447250.0000;848750.0000;447250.0000;
文件4;848375.0000;446250.0000;848750.0000;446250.0000;848750.0000;446500.0000;848375.0000;446500.0000;
文件5;848750.0000;446500.0000;849125.0000;446500.0000;849125.0000;446750.0000;848750.0000;446750.0000;
文件6;848750.0000;446250.0000;849125.0000;446250.0000;849125.0000;446500.0000;848750.0000;446500.0000;

 
有人能帮我吗?

SEANT 发表于 2022-7-6 12:52:37

这项任务似乎有几个方面:你在调查哪一个?
 
如果问题是关于检索CVS中包含的信息,那么请查看“FileSystemObject”。它可以用来打开文件并逐行读取。
 
该任务的另一个方面是分析每行文本以对单个元素进行排序。VBA函数InStr、Split、Trim等应该会有所帮助。
 
剩下的任务是确定较小的是否包含在较大的中。与大矩形一样,这里的重要信息是左下角和右上角。因此,如果:
 
如果smallLL(0)>largeLL(0)和
smallLL(1)>largeLL(1)和
smallUR(0)
smallUR(1)
 
小包含在大中。

klpocska 发表于 2022-7-6 13:05:48

 
Thx,如果条件良好。
 
你能告诉我一些关于CSV问题的例子吗?

SEANT 发表于 2022-7-6 13:22:28

这到底是什么问题?

klpocska 发表于 2022-7-6 13:36:49

 
这是CSV文件:
 
文件名;smallLL(0);Smalll(1);smallUR(0);smallUR(1);
 
文件1;848375.0000;446750.0000;848750.0000;447000.0000;
文件2;848375.0000;446500.0000;848750.0000;446750.0000;
文件3;848750.0000;447000.0000;849125.0000;447250.0000;
文件4;848375.0000;446250.0000;848750.0000;446500.0000;
文件5;848750.0000;446500.0000;849125.0000;446750.0000;
文件6;848750.0000;446250.0000;849125.0000;446500.0000;
...
...
 
我想读smallLL(0);Smalll(1);smallUR(0);和CSV文件中的smallUR(1)。
 
 
以及:
 
如果smallLL(0)>largeLL(0)和
smallLL(1)>largeLL(1)和
smallUR(0)
smallUR(1)
 
然后:
 
我想从csv中获取这些文件名(第1列),其中IF条件为true。
 
这就是问题所在。

klpocska 发表于 2022-7-6 13:48:14

问题解决了'
 

   file_name = "D:\items.csv"

   fnum = FreeFile
   Open file_name For Input As fnum
   whole_file = Input$(LOF(fnum), #fnum)
   Close fnum
   lines = Split(whole_file, vbCrLf)
   num_rows = UBound(lines) - 1

   For R = 0 To num_rows
            one_line = Split(lines(R), ";")
                        
            If one_line(1) > largeLL(0) And one_line(2) > largeLL(1) And one_line(3) < largeUR(0) And one_line(4) < largeUR(1) Then
         Msgbox one_line(0)      
         Else
   
         End If
   Next R
页: [1]
查看完整版本: 如何在文件中查找(C S V)