Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10851)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10852)
@@ -88,4 +88,9 @@
       if (Content != null) {
         Content.DataGridLogic.SetSelection(GetSelectedCells());
+        if (AreMultipleCellsSelected()) {
+          ResetHighlightedCellsBackground();
+          HightlightedCellsBackground = GetSelectedCells();
+          searchIterator = null;
+        }
       }
     }
@@ -120,4 +125,5 @@
         }
       }
+      searchIterator = null;
     }
 
@@ -164,6 +170,8 @@
       findAndReplaceDialog = new SearchAndReplaceDialog();
       findAndReplaceDialog.Show(this);
-      HightlightedCellsBackground = GetSelectedCells();
-      dataGridView.ClearSelection();
+      if (AreMultipleCellsSelected()) {
+        HightlightedCellsBackground = GetSelectedCells();
+        dataGridView.ClearSelection();
+      }
       findAndReplaceDialog.FindAllEvent += findAndReplaceDialog_FindAllEvent;
       findAndReplaceDialog.FindNextEvent += findAndReplaceDialog_FindNextEvent;
@@ -171,4 +179,5 @@
       findAndReplaceDialog.ReplaceNextEvent += findAndReplaceDialog_ReplaceEvent;
       findAndReplaceDialog.FormClosing += findAndReplaceDialog_FormClosing;
+      searchIterator = null;
     }
 
@@ -176,4 +185,5 @@
       ResetHighlightedCells();
       ResetHighlightedCellsBackground();
+      searchIterator = null;
     }
 
@@ -193,4 +203,9 @@
         currentSearchText = findAndReplaceDialog.GetSearchText();
       }
+      if (IsOneCellSelected()) {
+        var first = GetSelectedCells().First();
+        searchIterator.SetStartCell(first.Key, first.Value[0]);
+      }
+
 
       bool moreOccurences = false;
@@ -198,16 +213,46 @@
         currentCell = searchIterator.GetCurrent();
         moreOccurences = searchIterator.MoveNext();
+        if (IsOneCellSelected()) {
+          var first = GetSelectedCells().First();
+          if (currentCell.Item1 == first.Key && currentCell.Item2 == first.Value[0]) {
+            if (!moreOccurences) {
+              searchIterator.Reset();
+            }
+            currentCell = searchIterator.GetCurrent();
+            moreOccurences = searchIterator.MoveNext();
+
+          }
+        }
       } while (moreOccurences && (currentCell == null || !Content.GetValue(currentCell.Item2, currentCell.Item1).Equals(currentSearchText)));
 
       if (currentCell != null) {
-        HightlightedCells = TransformToDictionary(currentCell);
-        dataGridView.FirstDisplayedCell = dataGridView[currentCell.Item1, currentCell.Item2];
+        dataGridView.ClearSelection();
+        dataGridView[currentCell.Item1, currentCell.Item2].Selected = true;
       } else {
         ResetHighlightedCells();
       }
 
-      if (!moreOccurences) {
-        searchIterator.Reset();
-      }
+      //if (!moreOccurences) {
+      //  searchIterator.Reset();
+      //  dataGridView.ClearSelection();
+      //  currentCell = searchIterator.GetCurrent();
+      //  dataGridView[currentCell.Item1, currentCell.Item2].Selected = true;
+      //}
+    }
+
+    private bool AreMultipleCellsSelected() {
+      return GetSelectedCellCount() > 1;
+    }
+
+    private bool IsOneCellSelected() {
+      return GetSelectedCellCount() == 1;
+    }
+
+    private int GetSelectedCellCount() {
+      int count = 0;
+      foreach (var column in GetSelectedCells()) {
+        count += column.Value.Count();
+      }
+      return count;
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs	(revision 10851)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/FindPreprocessingItemsIterator.cs	(revision 10852)
@@ -23,5 +23,4 @@
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 
 namespace HeuristicLab.DataPreprocessing.Views {
@@ -33,4 +32,29 @@
       this.items = items;
       Reset();
+    }
+
+
+    public void SetStartCell(int columnIndex, int rowIndex) {
+      Tuple<int, int> startCell = GetNextFoundCell(columnIndex, rowIndex);
+      int tmpColumnIndex = columnIndex + 1;
+      while (startCell == null && tmpColumnIndex != columnIndex) {
+        if (!items.ContainsKey(tmpColumnIndex)) {
+          tmpColumnIndex = 0;
+        }
+        startCell = GetNextFoundCell(tmpColumnIndex, 0);
+        ++tmpColumnIndex;
+      }
+      currentCell = startCell;
+    }
+
+    private Tuple<int, int> GetNextFoundCell(int columnIndex, int rowIndex) {
+      Tuple<int, int> next = null;
+      for (int i = 0; i < items[columnIndex].Count; ++i) {
+        if (items[columnIndex][i] >= rowIndex) {
+          next = new Tuple<int, int>(columnIndex, i);
+          break;
+        }
+      }
+      return next;
     }
 
@@ -54,10 +78,10 @@
 
     public Tuple<int, int> GetCurrent() {
-      Tuple<int, int> resultCells = null;
+      Tuple<int, int> resultCell = null;
       if (items != null && CurrentCellExists()) {
         int cellRow = items[currentCell.Item1].ElementAt(currentCell.Item2);
-        resultCells = new Tuple<int, int>(currentCell.Item1, cellRow);
+        resultCell = new Tuple<int, int>(currentCell.Item1, cellRow);
       }
-      return resultCells;
+      return resultCell;
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/IFindPreprocessingItemsIterator.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/IFindPreprocessingItemsIterator.cs	(revision 10851)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Utils/IFindPreprocessingItemsIterator.cs	(revision 10852)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 
 namespace HeuristicLab.DataPreprocessing.Views {
@@ -28,4 +27,5 @@
     bool MoveNext();
     void Reset();
+    void SetStartCell(int columnIndex, int rowIndex);
   }
 }
