2017-08-21 143 views
0

我想通过列(列A)搜索并找到所有“好”文件,然后我想创建列B中的所有数据的列表,“对应的关于文件的信息”与良好的文件相对应从A列中。因此,排除所有的坏文件,并在最后的名单及其相应的信息如何迭代列以找到具有特定值的单元格,然后遍历这些行?

enter image description here

到目前为止我的代码返回A列所有的好项目,但返回列B的所有项目,而不仅仅是与列A相对应的那些。

  Excel.Worksheet xlWorkSheet = (Excel.Worksheet)excelWorkbook.Sheets[sheetSpaces]; 
     Excel.Range col = (Excel.Range)xlWorkSheet.Columns["A:A", Type.Missing]; 
     Excel.Range colB = (Excel.Range)xlWorkSheet.Columns["B:B", Type.Missing]; 

     foreach (Excel.Range item in col.Cells) 
     { 
      string text = (string)item.Text; 
      if (text == "Good") 
      {     
       Console.WriteLine(text); 

       foreach (Excel.Range itemSub in colB.Cells) 
       { 
        string textSub = (string)itemSub.Text; 
       } 
      } 
     } 
    } 
+3

看起来好像你想遍历所有的行,然后检查每行的列A是否等于“好”,if是的,然后取B列的值,并用它做点什么 – maccettura

+0

@maccettura你的方法很有意义,我已经编辑了我的脚本,尽管现在我坚持如何使if/foreach语句将仅返回与Good项目对应的列B项目。现在它只返回列A中的好项目,但列B中的所有信息。 –

+0

尽管您的最新代码不是我的方法。您不应该分别遍历A列和B列,您应该遍历_rows_。所以你有一个foreach会经历每一个推测。然后在这个foreach中检查'colA ==“Good”',如果是true,那么'list.Add(colB);'这是伪代码明白 – maccettura

回答

0

你需要添加一个if语句到你的循环中:

if(item.Value().ToString().Contains("Good")){ 
// do something 
} 
+0

请记住OP只遍历第一列,而不是整行。所以尽管你的if语句会给OP提供他们需要的匹配,但它不会给出B列的值(如问题中所要求的那样)。 – maccettura

相关问题