Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/В Google Таблицах автомат. удаление лишнего текста в ячейке? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
В Google Таблицах автомат. удаление лишнего текста в ячейке?
rownong27 Дата: Среда, 18.05.2016, 02:01 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 1 ±
Замечаний: 60% ±

Как сделать в Google Таблицах, чтобы если я в ячейке начинаю писать текст сверху, то при превышении 1000 символов, внизу этой ячейки автоматически начался удаляться лишний текст?

Файл: https://goo.gl/YSpSU4
 
Ответить
СообщениеКак сделать в Google Таблицах, чтобы если я в ячейке начинаю писать текст сверху, то при превышении 1000 символов, внизу этой ячейки автоматически начался удаляться лишний текст?

Файл: https://goo.gl/YSpSU4

Автор - rownong27
Дата добавления - 18.05.2016 в 02:01
Gustav Дата: Среда, 18.05.2016, 18:47 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Никак. Триггер изменения (onEdit или другой) срабатывает после сохранения ячейки. А, значит, это ничем не лучше, чем Ваша формула с длиной строки справа. Формула - разумный выход, к тому же она неожиданно не обрежет вводимую строку :)

P.S. Хотя можно попробовать такой финт, когда после нажатия Enter строка обрезается на 1000-м символе, а лишнее, если есть (ну не зря ж вводили эти символы!), вставляется в ячейку ниже или в иную специальную ячейку.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 18.05.2016, 19:17
 
Ответить
СообщениеНикак. Триггер изменения (onEdit или другой) срабатывает после сохранения ячейки. А, значит, это ничем не лучше, чем Ваша формула с длиной строки справа. Формула - разумный выход, к тому же она неожиданно не обрежет вводимую строку :)

P.S. Хотя можно попробовать такой финт, когда после нажатия Enter строка обрезается на 1000-м символе, а лишнее, если есть (ну не зря ж вводили эти символы!), вставляется в ячейку ниже или в иную специальную ячейку.

Автор - Gustav
Дата добавления - 18.05.2016 в 18:47
rownong27 Дата: Четверг, 19.05.2016, 00:49 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 1 ±
Замечаний: 60% ±

P.S. Хотя можно попробовать такой финт, когда после нажатия Enter строка обрезается на 1000-м символе, а лишнее, если есть (ну не зря ж вводили эти символы!), вставляется в ячейку ниже или в иную специальную ячейку.


Да такой вариант и нужен.
В ячейке есть текст. Я зашел, установил курсор в начале ячейке, и пишу. Нажал Enter и в конце ячейке, весь текст который превышает 1000 символов, обрезался. Можете так сделать?

(это нужно потому что в ячейке вносятся записи, на чем остановилось обобщение заказчику по текущему этапу, а старые записи по старым этапам становятся уже не актуальны, и поэтому нужно чтобы они постепенно исчезали).
 
Ответить
Сообщение
P.S. Хотя можно попробовать такой финт, когда после нажатия Enter строка обрезается на 1000-м символе, а лишнее, если есть (ну не зря ж вводили эти символы!), вставляется в ячейку ниже или в иную специальную ячейку.


Да такой вариант и нужен.
В ячейке есть текст. Я зашел, установил курсор в начале ячейке, и пишу. Нажал Enter и в конце ячейке, весь текст который превышает 1000 символов, обрезался. Можете так сделать?

(это нужно потому что в ячейке вносятся записи, на чем остановилось обобщение заказчику по текущему этапу, а старые записи по старым этапам становятся уже не актуальны, и поэтому нужно чтобы они постепенно исчезали).

Автор - rownong27
Дата добавления - 19.05.2016 в 00:49
Gustav Дата: Четверг, 19.05.2016, 13:19 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
В ячейке есть текст. Я зашел, установил курсор в начале ячейке, и пишу. Нажал Enter и в конце ячейке, весь текст который превышает 1000 символов, обрезался. Можете так сделать?

Да. Вот код, реализующий эту возможность:

[vba]
Код
function onEdit(e) {
  splitCellText(e.range, 1000);
}

function splitCellText(theCell, theLimit) {

  // если ячейка в выделении не одна - выходим без применения алгоритма
  if ((theCell.getValues().length * theCell.getValues()[0].length) > 1) return;

  var cellText = theCell.getValue().toString();
  if (cellText.length > theLimit) {

    var strBeg = cellText.substr(0, theLimit);
    var strEnd = cellText.substr(theLimit);

    // пишем обрезанную строку в ячейку
    theCell.setValue(strBeg);
    
    // выводим сообщение, в котором можно выделить и скопировать обрезанный остаток и куда-нибудь вставить
    // (если так не надо - просто закомментируйте следующую строку)
    Browser.msgBox('ОСТАТОК СТРОКИ ПОСЛЕ СИМВОЛА ' +theLimit+': '+strEnd);    
  }
}
[/vba]
По ссылке зарядил - проверяйте.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
В ячейке есть текст. Я зашел, установил курсор в начале ячейке, и пишу. Нажал Enter и в конце ячейке, весь текст который превышает 1000 символов, обрезался. Можете так сделать?

Да. Вот код, реализующий эту возможность:

[vba]
Код
function onEdit(e) {
  splitCellText(e.range, 1000);
}

function splitCellText(theCell, theLimit) {

  // если ячейка в выделении не одна - выходим без применения алгоритма
  if ((theCell.getValues().length * theCell.getValues()[0].length) > 1) return;

  var cellText = theCell.getValue().toString();
  if (cellText.length > theLimit) {

    var strBeg = cellText.substr(0, theLimit);
    var strEnd = cellText.substr(theLimit);

    // пишем обрезанную строку в ячейку
    theCell.setValue(strBeg);
    
    // выводим сообщение, в котором можно выделить и скопировать обрезанный остаток и куда-нибудь вставить
    // (если так не надо - просто закомментируйте следующую строку)
    Browser.msgBox('ОСТАТОК СТРОКИ ПОСЛЕ СИМВОЛА ' +theLimit+': '+strEnd);    
  }
}
[/vba]
По ссылке зарядил - проверяйте.

Автор - Gustav
Дата добавления - 19.05.2016 в 13:19
rownong27 Дата: Пятница, 20.05.2016, 00:25 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 1 ±
Замечаний: 60% ±

По ссылке зарядил - проверяйте.

А ссылка где? Что т не найду
 
Ответить
Сообщение
По ссылке зарядил - проверяйте.

А ссылка где? Что т не найду

Автор - rownong27
Дата добавления - 20.05.2016 в 00:25
Gustav Дата: Пятница, 20.05.2016, 00:36 | Сообщение № 6
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
А ссылка где?



МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
А ссылка где?


Автор - Gustav
Дата добавления - 20.05.2016 в 00:36
rownong27 Дата: Суббота, 21.05.2016, 10:26 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 1 ±
Замечаний: 60% ±

А ссылка где?

Цитата rownong27, 18.05.2016 в 02:01, в сообщении № 1
Файл: https://goo.gl/YSpSU4


Оке, все разобрался, спасиб))
 
Ответить
Сообщение
А ссылка где?

Цитата rownong27, 18.05.2016 в 02:01, в сообщении № 1
Файл: https://goo.gl/YSpSU4


Оке, все разобрался, спасиб))

Автор - rownong27
Дата добавления - 21.05.2016 в 10:26
rownong27 Дата: Понедельник, 23.05.2016, 01:14 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 36
Репутация: 1 ±
Замечаний: 60% ±


По ссылке зарядил - проверяйте.


Gustav, как я понял, сейчас данная функция настроена на работу по всему Листу? Как слать чтобы обработка шла только по столбцу "P", а на все остальные столбцы не распространялась (т.е. при превышении количества символов 10000 в столбце "P" после нажатия на Enter лишние символы будут удаляться, а в остальных столбах можно превышать 1000 символов и текст будет сохраняться весь)?
[moder]Повторное нарушение п.5j Правил форума.
Игнорирование замечаний администрации.
2 замечания и бан на 2 дня.
Цитату удалил[/moder]


Сообщение отредактировал _Boroda_ - Понедельник, 23.05.2016, 01:55
 
Ответить
Сообщение

По ссылке зарядил - проверяйте.


Gustav, как я понял, сейчас данная функция настроена на работу по всему Листу? Как слать чтобы обработка шла только по столбцу "P", а на все остальные столбцы не распространялась (т.е. при превышении количества символов 10000 в столбце "P" после нажатия на Enter лишние символы будут удаляться, а в остальных столбах можно превышать 1000 символов и текст будет сохраняться весь)?
[moder]Повторное нарушение п.5j Правил форума.
Игнорирование замечаний администрации.
2 замечания и бан на 2 дня.
Цитату удалил[/moder]

Автор - rownong27
Дата добавления - 23.05.2016 в 01:14
Gustav Дата: Понедельник, 23.05.2016, 14:52 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
сейчас данная функция настроена на работу по всему Листу? Как слать чтобы обработка шла только по столбцу "P", а на все остальные столбцы не распространялась

Сейчас работает на всех листах во всех ячейках данного файла. Чтобы ограничить область действия, надо добавить соответствующие проверки в функцию onEdit:
[vba]
Код
function onEdit(e) {
  sheet = e.range.getSheet();
  if (sheet.getName() == 'Лист1') {
    if (e.range.getColumn() == sheet.getRange('P1').getColumn()) {
      splitCellText(e.range, 1000); // теперь будет работать только в ячейках колонки P листа Лист1
    }
  }
}
[/vba]

Заодно также можно упросить проверку в начале функции splitCellText:
[vba]
Код
// если ячейка в выделении не одна - выходим без применения
if (theCell.getNumRows() * theCell.getNumColumns() > 1) return;
  
// ВМЕСТО if ((theCell.getValues().length * theCell.getValues()[0].length) > 1) return;
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
сейчас данная функция настроена на работу по всему Листу? Как слать чтобы обработка шла только по столбцу "P", а на все остальные столбцы не распространялась

Сейчас работает на всех листах во всех ячейках данного файла. Чтобы ограничить область действия, надо добавить соответствующие проверки в функцию onEdit:
[vba]
Код
function onEdit(e) {
  sheet = e.range.getSheet();
  if (sheet.getName() == 'Лист1') {
    if (e.range.getColumn() == sheet.getRange('P1').getColumn()) {
      splitCellText(e.range, 1000); // теперь будет работать только в ячейках колонки P листа Лист1
    }
  }
}
[/vba]

Заодно также можно упросить проверку в начале функции splitCellText:
[vba]
Код
// если ячейка в выделении не одна - выходим без применения
if (theCell.getNumRows() * theCell.getNumColumns() > 1) return;
  
// ВМЕСТО if ((theCell.getValues().length * theCell.getValues()[0].length) > 1) return;
[/vba]

Автор - Gustav
Дата добавления - 23.05.2016 в 14:52
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!