在使用EXCEL中进行单元格查询时,出现一个问题。
首先,我要查找的数据项是一个六位数,邮政编码格式的号码,001001是6位数中最小的数。即数据前2位为0。我先从textBox中取该字符,并转为int格式(num),然后用EXCEL里的
m_objRangetmp=m_objSheet.UsedRange.Find(num,Missing.Value ,Missing.Value,Missing.Value,Missing.Value ,Excel.XlSearchDirection.xlNext ,Missing.Value ,Missing.Value ,Missing.Value )对其进行查询。后来发现,当号码前2位为0的时候,会查找到与后4位数匹配的某一单元格,如,我查找001001,它会找到410011这样的数据。因此发现由于num已经转为整数,会去除2个0,因此查找时会找到我不想要的结果。希望有人告诉我在find里面怎么样设置才能检索正确?谢谢!
另外,我试图加入if语句发现了一个奇怪的现象,我加入条件,即
if(num<1000)
{
m_objRangetmp=m_objSheet.UsedRange.Find("00"+num,Missing.Value ,Missing.Value,Missing.Value,Missing.Value ,Excel.XlSearchDirection.xlNext ,Missing.Value ,Missing.Value ,Missing.Value );
}
else
{
m_objRangetmp=m_objSheet.UsedRange.Find(num,Missing.Value ,Missing.Value,Missing.Value,Missing.Value ,Excel.XlSearchDirection.xlNext ,Missing.Value ,Missing.Value ,Missing.Value )
}
查找001001,可以得到我想要的结果。但是有个疑问,刚开始我的条件写成10000,即
if(num<10000)
m_objRangetmp=m_objSheet.UsedRange.Find("00"+num,Missing.Value ,Missing.Value,Missing.Value,Missing.Value ,Excel.XlSearchDirection.xlNext ,Missing.Value ,Missing.Value ,Missing.Value );
else
{
m_objRangetmp=m_objSheet.UsedRange.Find(num,Missing.Value ,Missing.Value,Missing.Value,Missing.Value ,Excel.XlSearchDirection.xlNext ,Missing.Value ,Missing.Value ,Missing.Value )
}查找001001,却会是找不到。这到底是为什么呢?

解决方案 »

  1.   

    怎么没人理我?我发现了附加的条件其实都没用上。查找是跟EXCEL表里数据的排列顺序有关。所以if(num<1000)这个语句根本没有用上。如果按升序排列,那么第一个找到的数据就是我所希望得到的。但是if(num<10000)又为什么会出错呢?
      

  2.   

    终于知道,在EXCEL里虽然显示的是邮政编码格式,如001001这个数,实际查询时查找001001是不能找到对应数据,表格中的001001,实际上只是数值1001,所以查找时应该输入1001才行。因此条件if(num<10000)是正确的。