Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70188 Skopiuj do schowka automatyczne przeliczanie przy zmianie wartości komórki
Autor Wiadomość
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 19-02-2021, 14:50   automatyczne przeliczanie przy zmianie wartości komórki

W kolumnie H od wiersza nr 4 mam wstawione formuły, które chciałbym zastąpić makrem. Formuła jest prosta i np dla wiersza 4 brzmi:
Kod:
100%-(E4/(D4-G4)
. Co należy zrobić, żeby makro każdorazowo przy zmianie wartości komórek w kolumnach E, D lub G, przeliczało w tym samym wierszu wartość w kolumnie H wg powyższej formuły. Nadmieniam, że wartości w tych trzech kolumnach są wstawiane zawsze poprzez edytowanie (nie są wynikiem formuły czy makra)
  
ID posta: 400693 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2027 razy
Posty: 6409
Wysłany: 19-02-2021, 17:46   

A po co to?
Przecież tak standardowo działa Excel.
A poza tym formuła jest błędna, o jeden nawias za dużo lub za mało.
A jeśli przekonywająco wyjaśnisz, że to ma sens, to daj załącznik.
Poza tym wyjaśnij, jaki ma być wynik w razie błędu.
ID posta: 400712 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 19-02-2021, 18:12   

Maciej Gonet napisał/a:
A po co to?
Przecież tak standardowo działa Excel.

Wiem, że tak działa excel. Staram się po prosty "odchudzić" skoroszyt. Problem polega na tym, że plik znajduje się na ogólnym serwerze i użytkownicy mają straszny problem z otwieraniem plików o dużych rozmiarach. w przypadku tego pliku problem tkwi w tym, że ma on ok. 100 takich arkuszy i w każdym arkuszu jest kilkaset pozycji. Aby przyśpieszyć robiłem tak, że plik miał wyłączone automatyczne przeliczanie, ale to miało wpływ na inne pliki otwierane w tym czasie przez użytkowników
Maciej Gonet napisał/a:
A poza tym formuła jest błędna, o jeden nawias za dużo lub za mało.
. Tak przy kopiowaniu wkradła się pomyłka. Powinien być jeszcze jeden nawias. W załączeniu plik z fragmentem 1 arkusza
ID posta: 400714 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 19-02-2021, 19:51   

Ok. znalazłem już inny sposób. Dzięki za zainteresowanie
  
ID posta: 400716 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 771 razy
Posty: 4155
Wysłany: 19-02-2021, 20:36   

Makro zdarzeniowe (reaguje na zmianę wartości w dowolnej komórce w kolumnach D, E oraz G):
Kod:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&

On Error GoTo LaEnd

If Not Intersect(Target, Range("D:E")) Is Nothing Or _
   Not Intersect(Target, Range("G:G")) Is Nothing Then
        i = Target.Row
        Cells(i, 8).Value = Format(1 - Cells(i, 5).Value / _
            (Cells(i, 4).Value - Cells(i, 7).Value), "Percent")
End If
Exit Sub

LaEnd:
End Sub


Zeszyt1.xlsm
Pobierz Plik ściągnięto 4 raz(y) 15.61 KB

_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
  
ID posta: 400720 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 20-02-2021, 12:28   

Dzięki wielkie. Makro działa i przyda mi się.
ID posta: 400734 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 21-02-2021, 00:19   

umiejead napisał/a:
Makro zdarzeniowe

A co jeszcze trzeba byłoby do tego makra dopisać, żeby po usunięciu danych w kolumnie E,D i G kasował się również wynik w kolumnie H, bo teraz po usunięciu danych z kolumny E, w kolumnie H zostaje ostatni zapamiętany wynik
ID posta: 400776 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 771 razy
Posty: 4155
Wysłany: 21-02-2021, 12:04   

Trochę nieprecyzyjnie to opisałeś. Zrozumiałem tak: po usunięciu wartości z którejkolwiek z kolumn D, E, G komórka w kol. H ma być pusta. Inaczej: wartość w kol. H ma się pojawiać tylko jeżeli te 3 wcześniejsze są wypełnione.
Kod:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&

On Error GoTo LaEnd

If Not Intersect(Target, Range("D:E")) Is Nothing Or _
   Not Intersect(Target, Range("G:G")) Is Nothing Then
       
    Application.EnableEvents = False
   
    i = Target.Row
    If Cells(i, 4).Value = "" Or Cells(i, 5).Value = "" Or _
        Cells(i, 7).Value = "" Then
            Cells(i, 8).Value = ""
    Else
        Cells(i, 8).Value = Format(1 - Cells(i, 5).Value / _
        (Cells(i, 4).Value - Cells(i, 7).Value), "Percent")
    End If
   
    Application.EnableEvents = True
End If

Exit Sub

LaEnd:
Application.EnableEvents = True
End Sub
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 400794 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 21-02-2021, 14:31   

Dzięki wielkie. Makro przerobiłem trochę dla swoich potrzeb (może trochę w sposób amatorski). Nie potrafię jednak sobie poradzić z ochroną arkusza. Makro zdejmuje teraz ochronę, ale nie nakłada jej na nowo. Czy w kodzie arkusza to trzeba jakoś inaczej robić? Mój kod wygląda w całości tak:
Kod:
Dim i&
 ActiveSheet.Unprotect ("Drozdek")
On Error GoTo LaEnd

If Not Intersect(Target, Range("C:D")) Is Nothing Or _
   Not Intersect(Target, Range("F:F")) Is Nothing Then
       
    Application.EnableEvents = False
   
    i = Target.Row
    If Cells(i, 3).Value = "" Then
            Cells(i, 7).Value = ""
    Else
        Cells(i, 7).Value = Format(1 - Cells(i, 4).Value / _
        (Cells(i, 3).Value - Cells(i, 6).Value), "Percent")
    End If
   
    Application.EnableEvents = True
End If


If Not Intersect(Target, Range("B84:B160")) Is Nothing Then
        i = Target.Row
        Cells(i, 8).Value = Cells(i, 1).Value & Cells(i, 2).Value
        End If
Exit Sub

LaEnd:
 
Application.EnableEvents = True
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="Drozdek"
    ActiveSheet.EnableSelection = xlUnlockedCells
       
End Sub
ID posta: 400797 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 21-02-2021, 20:35   

Dołączam dla wszystkiego załącznik z tym kodem

B2.xls
Pobierz Plik ściągnięto 0 raz(y) 77.5 KB

ID posta: 400811 Skopiuj do schowka
 
 
Tajan


Pomógł: 4729 razy
Posty: 10412
Wysłany: 21-02-2021, 21:42   

Usuń linię
Kod:
Exit Sub
z makra.
ID posta: 400815 Skopiuj do schowka
 
 
zbysiomysio 
Exceloholic


Wersja: Win Office 2003
Posty: 211
Wysłany: 21-02-2021, 21:58   

Tajan napisał/a:
Usuń linię

Dzięki teraz już jest ochrona
ID posta: 400816 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe