diff --git a/src/controllers/handler.js b/src/controllers/handler.js
index a0d131b68..5091afbc6 100644
--- a/src/controllers/handler.js
+++ b/src/controllers/handler.js
@@ -65,6 +65,32 @@ export default function luckysheetHandler() {
     }
     
     const os = browser.detectOS(), isMac = os=="Mac"?true:false, scrollNum = isMac?1:3;
+
+    if (!Date.now)
+    Date.now = function() { return new Date().getTime(); };
+    //requestAnimationFrame method
+    (function() {
+        'use strict';
+        
+        var vendors = ['webkit', 'moz'];
+        for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
+            var vp = vendors[i];
+            window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];
+            window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']
+                                    || window[vp+'CancelRequestAnimationFrame']);
+        }
+        if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy
+            || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
+            var lastTime = 0;
+            window.requestAnimationFrame = function(callback) {
+                var now = Date.now();
+                var nextTime = Math.max(lastTime + 16, now);
+                return setTimeout(function() { callback(lastTime = nextTime); },
+                                nextTime - now);
+            };
+            window.cancelAnimationFrame = clearTimeout;
+        }
+    }());
     
     //滚动监听
     $("#luckysheet-cell-main").scroll(function () {
@@ -1077,7 +1103,7 @@ export default function luckysheetHandler() {
     $(document).mousemove(function (event) {
         luckysheetPostil.overshow(event); //有批注显示
 
-        clearInterval(Store.jfautoscrollTimeout);
+        window.cancelAnimationFrame(Store.jfautoscrollTimeout);
         
         if(formula.functionResizeStatus){
             let y = event.pageY;
@@ -1268,7 +1294,7 @@ export default function luckysheetHandler() {
                 Store.countfuncTimeout = setTimeout(function () { countfunc() }, 500);
             }
             
-            Store.jfautoscrollTimeout = setInterval(function () {
+            function mouseRender() {
                 if (Store.luckysheet_scroll_status  && !Store.luckysheet_cols_change_size && !Store.luckysheet_rows_change_size) {
                     let mouse = mouseposition(event.pageX, event.pageY);
                     let left = $("#luckysheet-scrollbar-x").scrollLeft(), 
@@ -1913,7 +1939,11 @@ export default function luckysheetHandler() {
                 else if (!!formula.rangeMove) {
                     formula.rangeMoveDraging(event, formula.rangeMovexy, formula.rangeMoveObj.data("range"), formula.rangeMoveObj, Store.sheetBarHeight, Store.statisticBarHeight);
                 }
-            }, 1);
+
+                Store.jfautoscrollTimeout = window.requestAnimationFrame(mouseRender);
+            }
+
+            Store.jfautoscrollTimeout = window.requestAnimationFrame(mouseRender);
         }
     });
     
@@ -1938,7 +1968,7 @@ export default function luckysheetHandler() {
         }
 
         Store.luckysheet_select_status = false;
-        clearTimeout(Store.jfautoscrollTimeout);
+        window.cancelAnimationFrame(Store.jfautoscrollTimeout);
         Store.luckysheet_scroll_status = false;
 
         $("#luckysheet-cell-selected").find(".luckysheet-cs-fillhandle").css("cursor","crosshair").end().find(".luckysheet-cs-draghandle").css("cursor","move");
diff --git a/src/controllers/pivotTable.js b/src/controllers/pivotTable.js
index d9f2426ea..eed268c8b 100644
--- a/src/controllers/pivotTable.js
+++ b/src/controllers/pivotTable.js
@@ -2342,6 +2342,7 @@ const pivotTable = {
 
         $("#luckysheet-dialog-pivotTable-range").html(getRangetxt(_this.pivotDataSheetIndex, _this.pivot_select_save));
         $("#luckysheet-modal-dialog-slider-pivot").show();
+        sheetmanage.sheetBarShowAndHide();
         luckysheetsizeauto();
     },
     getComposeArray: function (data) {
diff --git a/src/controllers/sheetMove.js b/src/controllers/sheetMove.js
index 854a4c0a9..3f00ddb8d 100644
--- a/src/controllers/sheetMove.js
+++ b/src/controllers/sheetMove.js
@@ -1762,30 +1762,32 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
         let stValue = Store.flowdata[strIndex][focusIndex];
 
         if(getObjType(stValue) == "object" && isRealNull(stValue.v)){
-            stNull = false;
+            stNull = true;
         }
         else if(isRealNull(stValue)){
-            stNull = false;
+            stNull = true;
         }
         else{
-            stNull = true;
+            stNull = false;
         }
 
+        console.log(stNull, "stNull");
+
         let cellNull = [], i = 0;
         for(let r = strIndex + 1; r <= endIndex; r++){
             let cell = Store.flowdata[r][focusIndex];
 
             if(getObjType(cell) == "object" && isRealNull(cell.v)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else if(isRealNull(cell)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else{
-                cellNull.push(true);
+                cellNull.push(false);
             }
 
-            if(cellNull.length == 1 && stNull && cellNull[i] == false){
+            if(cellNull.length == 1 && stNull==true && cellNull[i] == false){
                 index = strIndex + i + 1;
                 break;
             }
@@ -1817,13 +1819,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
         let stValue = Store.flowdata[endIndex][focusIndex];
 
         if(getObjType(stValue) == "object" && isRealNull(stValue.v)){
-            stNull = false;
+            stNull = true;
         }
         else if(isRealNull(stValue)){
-            stNull = false;
+            stNull = true;
         }
         else{
-            stNull = true;
+            stNull = false;
         }
 
         let cellNull = [], i = 0;
@@ -1831,13 +1833,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
             let cell = Store.flowdata[r][focusIndex];
 
             if(getObjType(cell) == "object" && isRealNull(cell.v)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else if(isRealNull(cell)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else{
-                cellNull.push(true);
+                cellNull.push(false);
             }
 
             if(cellNull.length == 1 && stNull && cellNull[i] == false){
@@ -1872,13 +1874,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
         let stValue = Store.flowdata[focusIndex][strIndex];
 
         if(getObjType(stValue) == "object" && isRealNull(stValue.v)){
-            stNull = false;
+            stNull = true;
         }
         else if(isRealNull(stValue)){
-            stNull = false;
+            stNull = true;
         }
         else{
-            stNull = true;
+            stNull = false;
         }
 
         let cellNull = [], i = 0;
@@ -1886,13 +1888,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
             let cell = Store.flowdata[focusIndex][c];
 
             if(getObjType(cell) == "object" && isRealNull(cell.v)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else if(isRealNull(cell)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else{
-                cellNull.push(true);
+                cellNull.push(false);
             }
 
             if(cellNull.length == 1 && stNull && cellNull[i] == false){
@@ -1927,13 +1929,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
         let stValue = Store.flowdata[focusIndex][endIndex];
 
         if(getObjType(stValue) == "object" && isRealNull(stValue.v)){
-            stNull = false;
+            stNull = true;
         }
         else if(isRealNull(stValue)){
-            stNull = false;
+            stNull = true;
         }
         else{
-            stNull = true;
+            stNull = false;
         }
 
         let cellNull = [], i = 0;
@@ -1941,13 +1943,13 @@ function getNextIndex(direction, focusIndex, strIndex, endIndex) {
             let cell = Store.flowdata[focusIndex][c];
 
             if(getObjType(cell) == "object" && isRealNull(cell.v)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else if(isRealNull(cell)){
-                cellNull.push(false);
+                cellNull.push(true);
             }
             else{
-                cellNull.push(true);
+                cellNull.push(false);
             }
 
             if(cellNull.length == 1 && stNull && cellNull[i] == false){
diff --git a/src/controllers/sheetmanage.js b/src/controllers/sheetmanage.js
index 23f70527f..365a5b916 100644
--- a/src/controllers/sheetmanage.js
+++ b/src/controllers/sheetmanage.js
@@ -1037,9 +1037,17 @@ const sheetmanage = {
         if (formula.rangestart) {
             formula.createRangeHightlight();
         }
-
+        
+        this.sheetBarShowAndHide(index);
+    },
+    sheetBarShowAndHide(index){
         let $c = $("#luckysheet-sheet-container-c");
-        $c.scrollLeft($sheet.offset().left);
+
+        if(index!=null){
+            let $sheet = $("#luckysheet-sheets-item" + index);
+            $c.scrollLeft($sheet.offset().left);
+        }
+
 
         let c_width = $c.width(), c_srollwidth = $c[0].scrollWidth, scrollLeft = $c.scrollLeft();