0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
1

Нужно, чтобы во вторую ячейку записывался тот же текст из первой ячейки, но без первого слова

09.04.2015, 13:52. Показов 738. Ответов 10
Метки нет (Все метки)

Привет всем! Т.к. я в VBA еще "витаю около", слезно прошу помочь мне с шаблоном кода:
В одной строке есть 2 ячейки, в первой есть текст, напр, с 2-мя словами.Мне нужно, чтобы во вторую ячейку записывался тот же текст из первой ячейки, но без первого слова. Задача элементарно решается формулой,НО! использовать я ее не хочу,т.к. юзер может элементарно удалить данные в строке, т.к. это база данных и формула исчезнет, мало того, документ весь пронизан макросами с завязками других листов, защищать лист тож не получится. И есть еще самый главный нюанс - в эту БД добавляются данные со строкой ниже,т.е. все ячейки относительные. Нашелся маленький шаблон кода, который я отредактировала под себя и работает как мне надо, но засада вся в том, что он написан для абсолютных ячеек:
Sub nn()
[a2] = Split([b2], "ФОП ")(1)
End Sub

`( ФОП-это слово,которое удаляется)
А у меня в макросе относительная ячейка типа "[a2]" имеет такой вид -
.Cells(qLastRow + 1, 1).Value =
И вот ломаю мозги что дальше записать после равенства, чтобы суть формулы = Split([b2], "ФОП ")(1) работала для относительных ячеек. После всяких "извращений" с моей стороны подставлять после = свои варианты, в ответ - одни ошибки А все из-за незнания синтаксиса, в будущем буду вгрызаться. Спасибо, кто поможет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2015, 13:52
Ответы с готовыми решениями:

Переписать текст из Мемо в StringGrid так, чтобы в каждую ячейку таблицы записывался отдельный символ
Дано:Поле Мемо в которое пользователь вводит строку, например:0M1K; таблица StringGrid размерностью...

Нужно чтобы текст записывался с новой строчки в .txt
Нужно чтобы с textbox2 текст добавлялся в текстовой документ с новой строчки.Я что-то написал ...

Разделить текст на 2 ячейки, чтобы в первой было 33 символа
Здравствуйте! Подскажите пожалуйста, имеются две колонки в Excel. В первой выражение из нескольких...

StringGrid. Нужно чтобы из первой таблицы брались цифры и вносились во вторую и к каждому числу прибавлялось 5
Здраствуйте, уважаемые знатоки. Нужно чтобы из первой таблицы брались цифры, и вносились во вторую...

10
4130 / 2234 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.04.2015, 14:26 2
Без Split() , просто синтаксис

Visual Basic
1
.Cells(qLastRow + 1, 1).Value = .Cells(qLastRow + 1, 2).Value
или

Visual Basic
1
.Cells(qLastRow + 1, "A") = .Cells(qLastRow + 1, "B")
0
3823 / 2250 / 751
Регистрация: 02.11.2012
Сообщений: 5,907
09.04.2015, 14:36 3
так пробовали?
Visual Basic
1
.Cells(qLastRow + 1, 1).Value =Split(.Cells(qLastRow + 1, 1).OFFset(0,1).Value, "ФОП ")(1)
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
09.04.2015, 15:20  [ТС] 4
Пока не получается, ковыряюсь... Вариант Cells(qLastRow + 1, 1).Value = Split(.Cells(qLastRow + 1, 1).Offset(0, 1).Value, "ФОП ")(1) выдает ошибку, а первый вариант ваще ниче дает, это ж получается просто ссылка на другую ячейку без расчехления на слова
0
3823 / 2250 / 751
Регистрация: 02.11.2012
Сообщений: 5,907
09.04.2015, 15:38 5
файл покажите. в файле пару решений вручную пропишите.
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
09.04.2015, 15:41  [ТС] 6
может тогда стоит не играться с этим split, а попробовать перевести формулу =ПСТР(A1;ПОИСК(" ";A1;1)+1;100) в vba, только опять же для меня это будет непосильно, я представляю, как она будет страшно выглядеть в коде, тут со сплитом замучалась, а с mid я ваще помру

Добавлено через 1 минуту
ок, щас немного подкорректирую, поуменьшаю бешенный размер)
0
4130 / 2234 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.04.2015, 16:20 7
Visual Basic
1
2
3
Cells(1, 1) = "Привет всем!"
Cells(1, 2) = Split(Cells(1, 1))(1)
Cells(1, 3) = Mid(Cells(1, 1), InStr(Cells(1, 1), " ") + 1)
Разумеется, если слов будет больше двух или их не будет вообще, то результат не будет идентичен.
0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
09.04.2015, 17:01  [ТС] 8
Кидаю файл, слава богу удалось почти все удалить с 4мб до 100 кб, осталось только нужное. Активные листы Лист1 и Лист3. На Листе1 давим кнопку Добавить в базу, на листе3 создается база. В столбце Q появляется ФИО. Задача эту ячейку скопировать/перенести (неважно) в столбец Н с удалением первого слова в тексте ст.Q, т.е. в данном случае без "ФОП". То, что было написано в предыдущем примере, то было условно, щас уже в настоящем файле оставила правильную нумерацию столбцов.
Вложения
Тип файла: xls Пример.xls (98.0 Кб, 3 просмотров)
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
09.04.2015, 20:25 9
Цитата Сообщение от marynac Посмотреть сообщение
Задача эту ячейку скопировать/перенести (неважно) в столбец Н с удалением первого слова в тексте ст.Q
Visual Basic
1
.Range("H" & qLastRow + 1).Value = Replace(.Range("Q" & qLastRow + 1).Value, Split(.Range("Q" & qLastRow + 1).Value)(0) & " ", "", 1, 1)
Добавлено через 1 минуту
Переносит без любого первого слова.
1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 5
09.04.2015, 20:46  [ТС] 10
Не сработало( В результате показывает пустую ячейку

Добавлено через 7 минут
О, сработало! Я кой-чего поменяла
.Cells(qLastRow + 1, 8).Value = Replace(.Cells(qLastRow + 1, 17).Value, Split(.Cells(qLastRow + 1, 17).Value)(0) & " ", "", 1, 1)
Спасибки большое!!!
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
09.04.2015, 23:28 11
Цитата Сообщение от marynac Посмотреть сообщение
Спасибки большое
Не за что
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2015, 23:28
Помогаю со студенческими работами здесь

Нужно чтобы остаток от деления записывался в массив
Нужно чтобы остаток от деления записывался в массив. Например 123:5 - 344. Но программа работает...

Дан текст. Удалить лишние пробелы, если последняя буква первого слова совпадает с первой буквой последнего
Дан текст, слова которого отделяются друг от друга одним или несколькими пробелами. Удалить лишние...

Нужно, чтобы при открытии первой страницы в RichEdit загружался свой текст
подскажите пожалуйста, как сделать следующее: на форме есть TabbedNotebook, на ней несколько...

Напечатать слова текста в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквойпоследующего слова
В тексте не слов, начинающихся одинаковыми буквами. Напечатать слова текста в таком порядке, чтобы...

Напечатать слова предложения в таком порядке, чтобы последняя буква каждого слова совпадала с первой буквой следующего слова
Помогите пожалуйста, заранее спасибо. Добавлено через 22 часа 21 минуту ап, выручите...

Исключить из первой строки слова, входящие во вторую строку
С клавиатуры вводятся две строки, содержащие некоторые слова. Слова перечислены через запятую....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru