I have written a program that finds a cell containing "Customer:" and the program works successfully. The problem is, I want the value of the cell directly next to the cell. The layout looks something like this:
__________ _________
|Customer:| | Steve |
|_________| |________|
|Customer:| | John |
|_________| |________|
|Customer:| | Frank |
|_________| |________|
So in this case I would want the values "Steve", "John", and "Frank". How can I do this?
Thanks, Luke
My Code:
public void gatherInfo()
{
string temp = "";
Excel.Range currentFind = null;
Excel.Range firstFind = null;
foreach (Excel.Worksheet sheet in excelWorkbook.Application.Worksheets)
{
try
{
// access cell within sheet
Excel.Range excelCell =
(Excel.Range)sheet.get_Range("A1", Type.Missing);
currentFind = excelCell.Find("Customer:", Type.Missing,
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
Type.Missing, Type.Missing);
while (currentFind != null)
{
// Keep track of the first range you find.
if (firstFind == null)
{
firstFind = currentFind;
}
// If you didn't move to a new range, you are done.
else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
== firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
{
//String value of cell
temp = currentFind.Value2.ToString();
break;
}
currentFind = excelCell.FindNext(currentFind);
}
//Find adjacent cell value here?
holdInformation.Add(temp);
}
catch
{
Console.WriteLine("Couldn't get customer name");
}
i think the offset function is what you are looking for. On your code, you could add a line that goes:
firstFind.Offset[0, 1];
"0" to signify that you target the current row "1" to signify that you want to target the 1st column on the right from the excel range
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.