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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение столбцов данными через другую ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение столбцов данными через другую ячейку (Формулы/Formulas)
Заполнение столбцов данными через другую ячейку
Gold_Barsik Дата: Среда, 19.06.2019, 20:57 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
Подскажите как можно наполнять столбцы A и B если данные необходимо вводить в ячейках T5; V5 и X5
К сообщению приложен файл: 2972982.xls (17.0 Kb)
 
Ответить
СообщениеПодскажите как можно наполнять столбцы A и B если данные необходимо вводить в ячейках T5; V5 и X5

Автор - Gold_Barsik
Дата добавления - 19.06.2019 в 20:57
Nic70y Дата: Среда, 19.06.2019, 21:32 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then
        u = Cells(Rows.Count, "a").End(xlUp).Row + 1
        If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then
            Range("a" & u) = Range("v5") + Range("t5")
            Range("b" & u) = Range("x5")
        End If
    End If
End Sub
[/vba]
К сообщению приложен файл: 9385646.xls (36.0 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then
        u = Cells(Rows.Count, "a").End(xlUp).Row + 1
        If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then
            Range("a" & u) = Range("v5") + Range("t5")
            Range("b" & u) = Range("x5")
        End If
    End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 19.06.2019 в 21:32
Gold_Barsik Дата: Среда, 19.06.2019, 22:15 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
??? Опробовал. И ничего не заметил :-(((
Что я делаю не так?
Попыхтел. Работает.

А возможно чтобы при вводе на первом листе, записывалось на второй лист?
К сообщению приложен файл: 2094926.xls (37.0 Kb)


Сообщение отредактировал Gold_Barsik - Среда, 19.06.2019, 23:03
 
Ответить
Сообщение??? Опробовал. И ничего не заметил :-(((
Что я делаю не так?
Попыхтел. Работает.

А возможно чтобы при вводе на первом листе, записывалось на второй лист?

Автор - Gold_Barsik
Дата добавления - 19.06.2019 в 22:15
Nic70y Дата: Четверг, 20.06.2019, 08:19 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then
        u = Sheets("показания_глюкометра").Cells(Rows.Count, "a").End(xlUp).Row + 1
        If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then
            Sheets("показания_глюкометра").Range("a" & u) = Range("v5") + Range("t5")
            Sheets("показания_глюкометра").Range("b" & u) = Range("x5")
        End If
    End If
End Sub
[/vba]
Попыхтел
да это я файл перепутал,
с компа убегал...
К сообщению приложен файл: 4293312.xls (38.5 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("t5, v5, x5")) Is Nothing Then
        u = Sheets("показания_глюкометра").Cells(Rows.Count, "a").End(xlUp).Row + 1
        If Range("t5") <> "" And Range("v5") <> "" And Range("x5") Then
            Sheets("показания_глюкометра").Range("a" & u) = Range("v5") + Range("t5")
            Sheets("показания_глюкометра").Range("b" & u) = Range("x5")
        End If
    End If
End Sub
[/vba]
Попыхтел
да это я файл перепутал,
с компа убегал...

Автор - Nic70y
Дата добавления - 20.06.2019 в 08:19
_Boroda_ Дата: Четверг, 20.06.2019, 14:53 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант. С плюшками всякими
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set x_ = Intersect(Target, Range("T5, V5, X5"))
    If Not x_ Is Nothing Then
        v_ = Range("T5")
        d_ = Range("V5")
        p_ = Range("X5")
        If v_ <> "" And d_ <> "" And p_ <> "" Then
            If IsNumeric(v_) Then
                If v_ >= 0 And v_ < 1 Then
                    If IsDate(d_) Then
                        If IsNumeric(p_) Then
                            With Sheets("показания_глюкометра")
                    r_ = .Cells(.Rows.Count, 1).End(3).Row + 1
                    .Cells(r_, 1) = d_ + v_
                    .Cells(r_, 2) = p_
                    Application.EnableEvents = 0
                    Range("T5, V5, X5").ClearContents
                    Application.EnableEvents = 1
                            End With
                        End If
                    End If
                End If
            End If
        End If
        'перепрыгивание на следующую ячейку ввода
        If x_(1).Address(0, 0) <> "X5" Then
            n_ = 2
        Else
            n_ = -4
        End If
        x_(1).Offset(, n_).Select
    End If
End Sub
[/vba]
К сообщению приложен файл: 2094926_1.xls (54.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант. С плюшками всякими
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set x_ = Intersect(Target, Range("T5, V5, X5"))
    If Not x_ Is Nothing Then
        v_ = Range("T5")
        d_ = Range("V5")
        p_ = Range("X5")
        If v_ <> "" And d_ <> "" And p_ <> "" Then
            If IsNumeric(v_) Then
                If v_ >= 0 And v_ < 1 Then
                    If IsDate(d_) Then
                        If IsNumeric(p_) Then
                            With Sheets("показания_глюкометра")
                    r_ = .Cells(.Rows.Count, 1).End(3).Row + 1
                    .Cells(r_, 1) = d_ + v_
                    .Cells(r_, 2) = p_
                    Application.EnableEvents = 0
                    Range("T5, V5, X5").ClearContents
                    Application.EnableEvents = 1
                            End With
                        End If
                    End If
                End If
            End If
        End If
        'перепрыгивание на следующую ячейку ввода
        If x_(1).Address(0, 0) <> "X5" Then
            n_ = 2
        Else
            n_ = -4
        End If
        x_(1).Offset(, n_).Select
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 20.06.2019 в 14:53
Gold_Barsik Дата: Пятница, 19.07.2019, 12:10 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
_Boroda_, Плюшки удобные, но передвинул столбцы на Листе 2, а данные вносит на прежние место (по столбцам A и B).
Подскажите что и где можно изменять чтобы поиск на Листе 2 производился по последней заполненной ячейки в столбце. (в данном файле по столбцу J )


Спасибо! Решено.
[vba]
Код
r_ = .Cells(.Rows.Count, "J").End(3).Row + 1
.Cells(r_, 10) = d_ + v_
.Cells(r_, 11) = p_
[/vba]
К сообщению приложен файл: 1-__-.xls (45.5 Kb)


Сообщение отредактировал Gold_Barsik - Пятница, 19.07.2019, 14:07
 
Ответить
Сообщение_Boroda_, Плюшки удобные, но передвинул столбцы на Листе 2, а данные вносит на прежние место (по столбцам A и B).
Подскажите что и где можно изменять чтобы поиск на Листе 2 производился по последней заполненной ячейки в столбце. (в данном файле по столбцу J )


Спасибо! Решено.
[vba]
Код
r_ = .Cells(.Rows.Count, "J").End(3).Row + 1
.Cells(r_, 10) = d_ + v_
.Cells(r_, 11) = p_
[/vba]

Автор - Gold_Barsik
Дата добавления - 19.07.2019 в 12:10
Gold_Barsik Дата: Воскресенье, 21.07.2019, 03:11 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
_Boroda_, Здравствуйте!

Как ни пытаюсь, пока не получилось.
Помогите "прилепить" Вашу Удобную плюшку (перепрыгивание на следующую ячейку ввода) вот сюда (если возможно):

[vba]
Код
    If Not Intersect(Target, Range("e19, k19, k20, k21, k23, k24, k25, g27, i27, k27")) Is Nothing Then
        u = Sheets("Лист2").Cells(Rows.Count, "c").End(xlUp).Row + 1
        v_0 = Sheets("Лист2").Cells(Rows.Count, "d").End(xlUp).Row
        v = Sheets("Лист2").Range("d" & v_0).Value
        If Range("e19") <> "" And Range("k19") <> "" And Range("k20") <> "" And Range("k21") <> "" And Range("k23") <> "" And Range("k24") <> "" And Range("k25") <> "" And Range("g27") <> "" And Range("i27") <> "" And Range("k27") <> "" Then
            If v <> Range("K19").Value Then
                Sheets("Лист2").Range("b" & u) = Range("e19")
                Sheets("Лист2").Range("c" & u) = Range("e20")
                Sheets("Лист2").Range("d" & u) = Range("k19")
                Sheets("Лист2").Range("e" & u) = Range("k20")
                Sheets("Лист2").Range("f" & u) = Range("k21")
                Sheets("Лист2").Range("g" & u) = Range("k23")
                Sheets("Лист2").Range("h" & u) = Range("k24")
                Sheets("Лист2").Range("i" & u) = Range("k25")
            Else
                Sheets("Лист2").Range("c" & u) = Sheets("Лист2").Range("c" & u).Offset(-1, 0) - 1
            End If
            Sheets("Лист2").Range("j" & u) = Range("g27") + Range("i27")
            Sheets("Лист2").Range("k" & u) = Range("k27")
            Range("g27, i27, k27").ClearContents
        End If
    End If
[/vba]

Заранее благодарен!
 
Ответить
Сообщение_Boroda_, Здравствуйте!

Как ни пытаюсь, пока не получилось.
Помогите "прилепить" Вашу Удобную плюшку (перепрыгивание на следующую ячейку ввода) вот сюда (если возможно):

[vba]
Код
    If Not Intersect(Target, Range("e19, k19, k20, k21, k23, k24, k25, g27, i27, k27")) Is Nothing Then
        u = Sheets("Лист2").Cells(Rows.Count, "c").End(xlUp).Row + 1
        v_0 = Sheets("Лист2").Cells(Rows.Count, "d").End(xlUp).Row
        v = Sheets("Лист2").Range("d" & v_0).Value
        If Range("e19") <> "" And Range("k19") <> "" And Range("k20") <> "" And Range("k21") <> "" And Range("k23") <> "" And Range("k24") <> "" And Range("k25") <> "" And Range("g27") <> "" And Range("i27") <> "" And Range("k27") <> "" Then
            If v <> Range("K19").Value Then
                Sheets("Лист2").Range("b" & u) = Range("e19")
                Sheets("Лист2").Range("c" & u) = Range("e20")
                Sheets("Лист2").Range("d" & u) = Range("k19")
                Sheets("Лист2").Range("e" & u) = Range("k20")
                Sheets("Лист2").Range("f" & u) = Range("k21")
                Sheets("Лист2").Range("g" & u) = Range("k23")
                Sheets("Лист2").Range("h" & u) = Range("k24")
                Sheets("Лист2").Range("i" & u) = Range("k25")
            Else
                Sheets("Лист2").Range("c" & u) = Sheets("Лист2").Range("c" & u).Offset(-1, 0) - 1
            End If
            Sheets("Лист2").Range("j" & u) = Range("g27") + Range("i27")
            Sheets("Лист2").Range("k" & u) = Range("k27")
            Range("g27, i27, k27").ClearContents
        End If
    End If
[/vba]

Заранее благодарен!

Автор - Gold_Barsik
Дата добавления - 21.07.2019 в 03:11
_Boroda_ Дата: Воскресенье, 21.07.2019, 13:00 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А что в этом макросе вообще происходит?
Дайте нормальный, соответствующий макросу файл и опишите словами что когда почему нужно


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА что в этом макросе вообще происходит?
Дайте нормальный, соответствующий макросу файл и опишите словами что когда почему нужно

Автор - _Boroda_
Дата добавления - 21.07.2019 в 13:00
Gold_Barsik Дата: Понедельник, 22.07.2019, 21:33 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
После ввода данных и нажатии на Enter вносит данные с Лист1 на Лист2
но Ваше дополнение пока не могу вставить
[vba]
Код

        'перепрыгивание на следующую ячейку ввода
        If x_(1).Address(0, 0) <> "X5" Then
            n_ = 2
        Else
            n_ = -4
        End If
        x_(1).Offset(, n_).Select
[/vba]
Спасибо!
К сообщению приложен файл: _1.xls (96.5 Kb)
 
Ответить
СообщениеПосле ввода данных и нажатии на Enter вносит данные с Лист1 на Лист2
но Ваше дополнение пока не могу вставить
[vba]
Код

        'перепрыгивание на следующую ячейку ввода
        If x_(1).Address(0, 0) <> "X5" Then
            n_ = 2
        Else
            n_ = -4
        End If
        x_(1).Offset(, n_).Select
[/vba]
Спасибо!

Автор - Gold_Barsik
Дата добавления - 22.07.2019 в 21:33
_Boroda_ Дата: Вторник, 23.07.2019, 09:15 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Gold_Barsik, зря Вы решили, что строки с [vba]
Код
Application.EnableEvents
[/vba]у меня от нечего делать написаны и стерли их. Впрочем, дело Ваше
[vba]
Код
           Range("g27, i27, k27").ClearContents 'ластик
        End If
        Set x_ = Intersect(Target, Range("g27, i27, k27"))
        If Not x_ Is Nothing Then
            If x_(1).Address(0, 0) <> "K27" Then
                n_ = 2
            Else
                n_ = -4
            End If
            x_(1).Offset(, n_).Select
        End If
    End If
End Sub
[/vba]
К сообщению приложен файл: _1-10-1.xls (97.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеGold_Barsik, зря Вы решили, что строки с [vba]
Код
Application.EnableEvents
[/vba]у меня от нечего делать написаны и стерли их. Впрочем, дело Ваше
[vba]
Код
           Range("g27, i27, k27").ClearContents 'ластик
        End If
        Set x_ = Intersect(Target, Range("g27, i27, k27"))
        If Not x_ Is Nothing Then
            If x_(1).Address(0, 0) <> "K27" Then
                n_ = 2
            Else
                n_ = -4
            End If
            x_(1).Offset(, n_).Select
        End If
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 23.07.2019 в 09:15
Gold_Barsik Дата: Вторник, 23.07.2019, 13:52 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
_Boroda_, Здравствуйте. Я не решал что стирать, что оставлять. Спасибо большое за помощь!
Это по моей невнимательности, незнанию и неопытности.
Наверно решил что раз есть макрос
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba] то второе название такое же будет давать глюки. И..... подрезал.
Буду пробовать вернуть их как-то на место. Может что то получится? Пока не получается.
В приложенном файле работает, на моём пока не хочет.


Сообщение отредактировал Gold_Barsik - Вторник, 23.07.2019, 14:18
 
Ответить
Сообщение_Boroda_, Здравствуйте. Я не решал что стирать, что оставлять. Спасибо большое за помощь!
Это по моей невнимательности, незнанию и неопытности.
Наверно решил что раз есть макрос
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba] то второе название такое же будет давать глюки. И..... подрезал.
Буду пробовать вернуть их как-то на место. Может что то получится? Пока не получается.
В приложенном файле работает, на моём пока не хочет.

Автор - Gold_Barsik
Дата добавления - 23.07.2019 в 13:52
_Boroda_ Дата: Вторник, 23.07.2019, 14:18 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Если не уверены, то нужно оставлять те части кода, в которых не уверены.
Если здесь работает, а там не работает, то нужно искать отличия в файлах


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли не уверены, то нужно оставлять те части кода, в которых не уверены.
Если здесь работает, а там не работает, то нужно искать отличия в файлах

Автор - _Boroda_
Дата добавления - 23.07.2019 в 14:18
Gold_Barsik Дата: Вторник, 23.07.2019, 15:21 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
С отличиями я проблемы решил. А вот с
[vba]
Код
Application.EnableEvents
[/vba] пока не получается (((
Какие события и где оно отключает на время?
Пока понять не могу.
К сообщению приложен файл: 8036823.xls (54.0 Kb)


Сообщение отредактировал Gold_Barsik - Вторник, 23.07.2019, 15:42
 
Ответить
СообщениеС отличиями я проблемы решил. А вот с
[vba]
Код
Application.EnableEvents
[/vba] пока не получается (((
Какие события и где оно отключает на время?
Пока понять не могу.

Автор - Gold_Barsik
Дата добавления - 23.07.2019 в 15:21
_Boroda_ Дата: Вторник, 23.07.2019, 15:50 | Сообщение № 14
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Чтобы узнать для чего - почитайте справку
Чтобы понять куда - пробегите весь код в пошаговом режиме через F8 (через F9 поставьте на первой строке макроса точку останова и заполняйте строку 29 на листе).
Увидите, что на строке с ClearContents макрос снова начинает свою работу, не прекращая при этом предыдущий макрос. Пробегает сам себя и снова продолжает со строки, следующей за ClearContents. В Вашем случае это только замедляет работу маккроса и всё, больше ни на что не влияет. Но при другом коде такие дополнительные заходы в код могут все испортить
Следовательно, EnableEvents нужно выключать перед ClearContents и включать после
В общем случае - выключать перед действиями, запускающими события листа, книги, ... (если автозапуск этих событий не предусмотрен самим кодом)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧтобы узнать для чего - почитайте справку
Чтобы понять куда - пробегите весь код в пошаговом режиме через F8 (через F9 поставьте на первой строке макроса точку останова и заполняйте строку 29 на листе).
Увидите, что на строке с ClearContents макрос снова начинает свою работу, не прекращая при этом предыдущий макрос. Пробегает сам себя и снова продолжает со строки, следующей за ClearContents. В Вашем случае это только замедляет работу маккроса и всё, больше ни на что не влияет. Но при другом коде такие дополнительные заходы в код могут все испортить
Следовательно, EnableEvents нужно выключать перед ClearContents и включать после
В общем случае - выключать перед действиями, запускающими события листа, книги, ... (если автозапуск этих событий не предусмотрен самим кодом)

Автор - _Boroda_
Дата добавления - 23.07.2019 в 15:50
Gold_Barsik Дата: Вторник, 23.07.2019, 16:05 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
Благодарен Вам!
 
Ответить
СообщениеБлагодарен Вам!

Автор - Gold_Barsik
Дата добавления - 23.07.2019 в 16:05
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение столбцов данными через другую ячейку (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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