Как заменить содержимое столбцов конкретными данными
id name sal 0 abc 100 123 bcd 200 ss cdf 300 0 dfg 400 id name sal 0 ghi 500 234 hij 600 sd ojk 400
вывод такой
id name sal 123 abc 100 123 bcd 200 123 cdf 300 123 dfg 400 234 ghi 500 234 hij 600 234 ojk 400
Что я уже пробовал:
Sub DeleteRowsWithX() maxRow = ActiveSheet.UsedRange.Rows.Count For i = 2 To maxRow Do While (StrComp(ActiveSheet.Cells(i, 2).Text, "id", vbTextCompare) = 0) Rows(i).Select Selection.Delete Shift:=xlUp Loop Next End Sub
Maciej Los
На основании какого условия?!?
Patrice T
Объясните правила трансформации.
В чем проблема в коде ?
vanga srikar reddy
Привет Мацей
Спасибо за ваше решение
но требования изменились
как показано ниже
Ввод
идентификационное имя сал
0 ABC 500
ABC001 BCD 400
0 DEF 400
xyz. ab EFG 200
0 FGH 300
BCD GHI 400
идентификационное имя сал
0 HIJ 300
ABC002 IJK 400
0 Хэллоуин 500
xyz. ab KLM 600
0 LMN 700
CDE MNO 800
требуется вывод как показано ниже
идентификационное имя сал
ABC001 ABC 500
ABC001 BCD 400
ABC001 DEF 400
ABC001 EFG 200
ABC001 FGH 300
ABC001 GHI 400
ABC002 HIJ 300
ABC002 IJK 400
ХЭЛЛОУИН ABC002 500
ABC002 KLM 600
ABC002 LMN 700
ABC002 MNO 800
Заранее спасибо
Maciej Los
Не стесняйтесь улучшать мой код.
vanga srikar reddy
Я пытаюсь улучшить код
но размышляйте только о числовых значениях, но не о строковых значениях
можете ли вы pls предоставить код требующий решения
Суб Очистка()
Дим сервер сценариев Windows Как лист
Dim i как целое число
- контекст
Установите wsh = ThisWorkbook.Рабочие листы(1)
- стартовый ряд
i = 2
- до камеры в кол. А не пусто
Делать, пока сервер сценариев Windows.Диапазон("а" & я) &ЛТ;&ГТ; ""
'если ноль-получить значение снизу ячейки
Если wsh. Range ("A" & i) = 0, то
сервер сценариев Windows.Диапазон("а" & я) = выключатели.Диапазон("а" & я).Смещение (RowOffset:=1)
Конец, Если
'если ячейка содержит нечисловое значение и это не "идентификатор" - получите значение из вышеприведенной ячейки
Если LCase(сервер сценариев Windows.Диапазон("а" & я)) &ЛТ;&ГТ; "идентификатор" и числового(сервер сценариев Windows.Диапазон("а" & я)) Затем
сервер сценариев Windows.Диапазон("а" & я) = выключатели.Диапазон("а" & я).Смещение (RowOffset:=-1)
Конец, Если
'if "id" - удалить всю строку
Если LCase(сервер сценариев Windows.Диапазон("а" & я)) = "код" тогда
wsh. Range ("A" & i).Весь день.Удалить xlShiftUp
i = i-1
Конец, Если
i = i + 1
Петля
Конец Подводной Лодки
Maciej Los
Не меняйте свой первоначальный вопрос, если ваши требования были изменены в то же время, потому что все ответы на ваш первоначальный вопрос неверны. Вы должны задать еще один вопрос.
vanga srikar reddy
Ее мое первоначальное требование может вы PLS предоставить код ниже входного
Ввод :
идентификационное имя сал
0 ABC 500
ABC001 BCD 400
0 DEF 400
xyz. ab EFG 200
0 FGH 300
BCD GHI 400
идентификационное имя сал
0 HIJ 300
ABC002 IJK 400
0 Хэллоуин 500
xyz. ab KLM 600
0 LMN 700
CDE MNO 800
требуется вывод как показано ниже
идентификационное имя сал
ABC001 ABC 500
ABC001 BCD 400
ABC001 DEF 400
ABC001 EFG 200
ABC001 FGH 300
ABC001 GHI 400
ABC002 HIJ 300
ABC002 IJK 400
ХЭЛЛОУИН ABC002 500
ABC002 KLM 600
ABC002 LMN 700
ABC002 MNO 800
Заранее спасибо
Maciej Los
Нет, это не так! Это новое требование!
Как я уже упоминал. Вы должны опубликовать его как еще один вопрос. Вы должны предоставить подробную информацию о своей проблеме и о том, что вы пробовали до сих пор.
Maciej Los
Вы должны добавить еще одну переменную в качестве счетчика для появления "id". Пусть будет так Dim idcounter As Integer: idcounter = 1
Затем вы должны улучшить этот фрагмент кода:'if "id" - remove entire row
If LCase(wsh.Range("A" & i)) = "id" Then
wsh.Range("A" & i).EntireRow.Delete xlShiftUp
wsh.Range("A" & i)= wsh.Range("B2") & Right("000" + idocunter,3)
i = i - 1
idcounter = idcounter +1
End If