W arkuszu Excel jak konwertować format daty komórki na format ogólny, gdy jej wartość jest zmieniana z daty na tekst (lub liczbę)?

3

Uważam to za bardzo dziwne w arkuszu Excela (lub może tylko ja), domyślnie wszystkie KOMÓRKI w arkuszu Excela są w formacie OGÓLNYM (G), a kiedy wprowadzę wartość daty (1/1/2012) w komórce format zostanie zmieniony do chwili obecnej (D4), co jest idealne. Ale kiedy zmieniam wartość na jakąś wartość tekstową (np. Pociąg), format nie zmienia się na format ogólny (lub format tekstu), nadal pozostaje w formacie daty (D4).

Czy należy włączyć dowolne ustawienie w programie Excel, aby zmienić format od daty do ogólnej, gdy wartość komórki zmieni się z daty na tekst?

Jakakolwiek pomoc będzie doceniona.

rookie_developer
źródło

Odpowiedzi:

1

Nie, nie możesz tego zrobić. To rzecz jednorazowa.

pnuts
źródło
1

Rozważałeś to zamiast ?

Zmień ustawienie NumberFormat na wstępowanie za każdym razem komórkę do „General” NumberFormat.

(Trzeba by wejść do komórki w trybie edycji, aby mimo to zmienić datę na tekst, więc nie różni się znacząco)

Zamiast sprawdzać format, gdy jesteś odejście komórka.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ActiveCell.NumberFormat = "General"
End Sub

Oczywiście może to powodować inne problemy z innymi komórkami, których nie chcesz jako „Ogólne”, ale możesz wykluczyć zakresy, całkiem łatwo, testując ...

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveCell.Column <> 4 Then
      ActiveCell.NumberFormat = "General"
    End If
End Sub

Po wprowadzeniu daty w ActiveCell Excel nadal konwertuje ją na format daty przy wyjściu, ale ponieważ jest to format „Ogólny”, na początku numer seryjny nie będzie konwertowany na datę, która wydaje się być problemem masz teraz.

Największą wadą jest to, że wybranie istniejącej daty spowoduje jej konwersję na „Ogólne”, ale będąc jeszcze w komórce, zawsze możesz kliknąć prawym przyciskiem myszy i sformatować ją jako datę, jeśli zapomniałeś zauważyć datę przed wyjściem.

Jeśli nadal chcesz zbadać formatowanie komórki w miarę jej opuszczania, możesz również spróbować tego

Przechowuj bieżącą ActiveCell jako zmienną publiczną w module, aby po jej opuszczeniu można jej użyć do sprawdzenia, czy jest to format daty

Funkcja komórki może być najłatwiejszym sposobem na sprawdzenie formatu daty

aCell = Application.Evaluate("=CELL(""format""," & previousCell & ")")
If Left(aCell, 1) <> "D" Then previouseCell.NumberFormat = "General"
datatoo
źródło
0

Możesz także skorzystać z tej funkcji arkusza:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not IsNumeric(Target.Value) And Not IsDate(Target.Value) Then
    Target.NumberFormat = "General"
  End If
End Sub

Jeśli wartością jest łańcuch, zostanie ustawiony format ogólny.

Tom74
źródło