Страницы: 1 2 След.
RSS
удаление пустых ячеек со сдвигом
 
Добрый день!
Требуется помощь, есть таблица с разбросанными по ячейкам значениями, нужно удалить пустые ячейки со сдвигом вверх так чтобы значения в столбцах вставали друг напротив друга.
Заранее спасибо
Изменено: edise - 04.12.2013 20:36:03
 
Код
usedrange.specialcells(xlCellTypeBlanks).delete
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
я совсем не разбираюсь в макросах,  и не очень понимаю куда это кусок кода именно вставлять, к тому же здесь определенно нет сдвига вверх
 
Цитата
нужно удалить пустые ячейки со сдвигом вверх
И что мешает выделить диапазон - кликнуть "найти и выделить" - выделить - пустые - ПКМ - удалить - со сдвигом вверх ?!.  ;)
Изменено: Z - 04.12.2013 20:51:14
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
я совсем не разбираюсь в макросах, и не очень понимаю куда это кусок кода именно вставлять, к тому же здесь определенно нет сдвига вверх
Не разбираюсь, но утверждаю ))
 
потому что  они не пустые а с формулами внутри, просто если формула выполняется то есть значение, если нет то ячейка "пустая", а "найти и выделить" - не считает ее пустой...
 
Цитата
потому что они не пустые а...
Приходите, когда окончательно определитесь со своей/ими хотелками - думаем больше, глыбже, тщательне-е-е-е-е... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
В стартовом сообщении про ФОРМУЛЫ ни слова: "нужно удалить пустые ячейки". И зачем утверждать "определенно", если не разбираетесь в макросах?
 
в идеале конечно мне нужно понять как сделать так чтобы формула выполнялась не в ячейке с которой совпадают ее значения, а в первой выполнилась пошла на вторую, выполнилась и тд...
у меня есть файл он является реестром инфы из другого файла он ищет в строчках определенные значения и если находит то выставляет их,
=ЕСЛИ('C:\Users\USER\Downloads\[для Наташи.xls]Лист1'!$B22="ИТОГО:";'C:\Users\USER\Downloads\[для Наташи.xls]Лист1'!$J22;" " ;)
и если находит значение в 22 ячейке то в 22 и записывает, а хотелось бы конечно чтобы делал в 22 нашел записал в 1, пошел дальше, нашел в 67 записал во 2 и тд...
но я не знаю как организовать такой цикл...
 
если удалять не пустые ячейки а ячейки без значений? то есть с формулой но без значения
возможно это?
 
Да. Если не такой позорный пример приложите.
Я сам - дурнее всякого примера! ...
 
Вот пример
 
Вы издеваетесь? Что нужно-то?
Я сам - дурнее всякого примера! ...
 
ухтыкаквсёинтересно...
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Развлекайтесь, в модуль листа:

Код
Public Sub www()
    Dim c As Range
    For Each c In Me.UsedRange.Columns(1).Cells
        If Application.CountA(c.Resize(, 20)) Then
        Else
            c.EntireRow.Hidden = -1
        End If
    Next
End Sub
 
Я сам - дурнее всякого примера! ...
 
))) по ячейкам разбросаны значения,  (разбросаны потому что появляются они если выполняется формула - которая ищет определенные значения в ячейках в другой книге и в тех же ячейках этой книги их выставляет, то есть если нужное условие выполняется в ячейке 22 в книге 1, то значение выставится в ячейке 22 в книге 2). В идеале хотелось бы чтобы значения найденные выставлялись не в разброс а последовательно, в ячейку а1 выставить первое выполняющееся условие из ячейки 22 в книге 1, второе выполняющееся условие из ячейки 66 например выставить в ячейку а2 и так далее

если выставлять последовательно значения не возможно, то как можно удалить образовавшиеся пустые ячейки (которые с формулами, но без значений)
 
Вариант:
Код
Public Sub www()
    Dim c As Range
    For Each c In Me.UsedRange.Columns(1).Cells
        If Application.Sum(c.Resize(, 20)) Then
        Else
            c.EntireRow.Hidden = -1
        End If
    Next
End Sub
 
Я сам - дурнее всякого примера! ...
 
KuklP, ругается на Me.UsedRange.Columns(1).Cells пишет Invalid use of Me keyword
 
Так пошустрей будя:
Код
Public Sub www()
    Dim c As Range
    Me.Rows.Hidden = 0
    Application.ScreenUpdating = 0
    For Each c In Me.UsedRange.Columns(1).Cells
        If Application.Sum(c.Resize(, 20)) Then
        Else
            c.EntireRow.Hidden = -1
        End If
    Next
    Application.ScreenUpdating = -1
End Sub
 
Я сам - дурнее всякого примера! ...
 
Вы, братец, не читаете, что Вам пишут. А надо бы. В модуль листа вставлять нать!
Я сам - дурнее всякого примера! ...
 
KuklP, не получается все еще ругается на эту строчку Me.UsedRange.Columns(1).Cells и пишет Invalid use of Me keyword
 
И будет ругаться: у Вас в стандартном модуле, а нужно в МОДУЛЬ ЛИСТА - Сергей ведь Вам говорил...
 
понял))) но он скрывает строки, а не ячейки (то есть если в 1 столбце 1 строки значений нет, а во 2 столбце 1 строки есть, то он ее все равно скрывает) и получается пропадают значения..
 
Похоже не обойтись без моего участия :) Держите уж...
Я сам - дурнее всякого примера! ...
 
спасибо про модуль листа, понял, вставил но он не удаляет ячейки а скрывает строки, и получается что пропадают значения...
 
А как надо то?
Я сам - дурнее всякого примера! ...
 
Серж, как я понял, нужно удалить ячейку со сдвигом вверх)
 
да именно удалить ячейку со сдвигом вверх, ячейку в которой нет значений
 
Офигеть! Ну ща, накостряю...
Я сам - дурнее всякого примера! ...
 
спасибо)))
я уж полдня пытался)))
первые полдня эти ср..ные формулы придумывал)))
Страницы: 1 2 След.
Читают тему
Наверх