/ / Excel wklej specjalnie używając tylko wartości, kopiuje również typ danych wartości wraz z wartością do komórki docelowej - excel, vba

Excel wklej specjalne tylko wartości, kopiuje również typ danych wartości wraz z wartością do komórki docelowej - excel, vba

Próbowałem lepiej zrozumieć komórki Excelaa w szczególności ich typy danych. Jeśli ktoś jest zainteresowany szczegółem, moje dochodzenie znajduje się w ponumerowanych punktach poniżej. Moje wnioski są oznaczone jako A do D. Naprawdę interesuje mnie, czy ktokolwiek ma coś do dodania.

ZA. Każda komórka programu Excel ma właściwość, która definiuje oczekiwany "typ danych" przechowywanych danych. Wartość danych przechowywanych w komórce ma również właściwość "typ danych", która nie musi być taka sama jak właściwość "typ danych" komórki. (Typy danych to Ogólne, Tekst lub Data). (Typ danych komórki to nie to samo, co komórki tworzące zestaw za pomocą "Format komórki"> "zakładka Liczba" "kategoria formatu, ale jest powiązane

B. Po wprowadzeniu danych do komórki typ danych nadany wartości danych jest dziedziczony z typu danych komórki (gdy wartość danych może zostać przekonwertowana na typ danych komórki). start, powoduje to przydzielenie typu danych tekstowych jako typu danych wartości, niezależnie od typu danych komórki.

DO. Podczas korzystania z programu Excel kopiować> Wklej (tylko wartości), aby skopiować wartość danych z jednej komórki do drugiej, również typ danych jest kopiowany. (Jest to trochę dziwne, ponieważ nie ma w tym przypadku żadnego przesłonięcia w specjalnej pasteli. Można to zrobić za pomocą opcji PasteSpecial> Raw)

Uwaga: Jeśli wkleisz dane z dokumentu tekstowego (np. 01234), użycie domyślnego wklejenia spowoduje przekształcenie tekstu 0123 na liczbę. Używając pasty "tylko wartość", 01234 jest wklejane do wartości z typem danych tekstu - jeśli typem danych w komórce jest tekst.

D. Wprowadzanie =SUM(1,2) do komórki z tekstowym typem danych powoduje, że formuła jest wyświetlana, a nie obliczana. to jest traktowane jako dane tekstowe.

Zauważ, że tej funkcji VBA można użyć doprzekonwertuj typ danych wartości liczbowej przechowywanej w komórce, aby mieć tekstowy typ danych o tych samych znakach. Wystarczy odwołać się do komórki, którą chcesz przekonwertować za pomocą formuły. Yu może użyć polecenia copy> paste special (tylko wartości), aby przenieść skonwertowaną wartość na komórkę, aby następnie było przechowywane jako wartość.

Public Function ConvertValueToHaveTextDataType(Avalue As Variant) As String

ConvertValueToHaveTextDataType = CStr(Avalue)

End Function

Oto dlaczego doszedłem do tych wniosków.

"Eksperymentowałem i znalazłem:

  1. Ładowanie danych do komórek arkusza za pomocą QueryTables.TextFileColumnDataTypes ma parametr TextFileColumnDataTypes które można przypisać xlTextFormat, xlGeneralFormat i niektóre formaty dat. Nie ma opcji numerycznej. Więc używając xlGeneralFormat ładowanie danych numerycznych wydaje się być "jak to się robi".

  2. Na tej podstawie zakładam, że każda komórka Excela ma "typ danych" (tj. Ogólne, tekst lub datę).

  3. "Formatuj komórki" zmieni sposób wyświetlania danych,ale także zmienia sposób ich zachowania, gdy dane są wprowadzane, np. zmiana formatu komórki może również zmienić "typ danych" komórki. Gdy format komórki to TEKST, wpisanie "01234" spowoduje zapisanie wprowadzonych danych jako tekstu i zachowanie wiodącego "0". Gdy komórka ma OGÓLNY format, wpisanie "0123" spowoduje, że będzie ona zapisana jako liczba 123 (tj. Zanotuj, że 0 zostało usunięte).

  4. Rozważ komórkę z formatem TEXT i "0123"przechowywane jako wartość tekstowa. Zmiana formatu komórki na GENERAL lub NUMBER nie zmieni znaków przechowywanych w komórce, ale doda zieloną etykietę do komórki, która zapewnia "popup warning", która informuje "Number Stored as Text". (Wklej specjalnie, mnożenie może być użyte do zamiany ich na liczbę)

  5. To tam robi się dziwnie.

Jeśli edytujesz wartość tekstową "0123" zapisaną w a"Komórka formatu ogólnego" po naciśnięciu klawisza ENTER zostaje usunięte "0" i staje się 123, czego można się spodziewać. Jeśli jednak skopiujesz komórkę "0123" i wkleisz ją za pomocą opcji "TYLKO WARTOŚĆ", dane zostaną wklejone jako "0123", to samo stanie się, jeśli wkleisz je do komórki formatu liczbowego. Jeśli więc do kopiowania wartości danych zostanie użyta kopia programu Excel> Wklej (tylko wartości), typ danych również zostanie skopiowany. (To jest orzechy!).

Jeśli wkleisz 123.12 zapisany jako liczba z komórki numerycznej lub formatu ogólnego, do komórki formatu tekstowego wartość pozostaje jako 123.12, a typ komórki pozostaje jako tekst, nie jest wyświetlane ostrzeżenie wyskakujące, nie jestem pewien, jaki jest typ danych wartości. Jednak jeśli edytujesz komórkę i naciśniesz klawisz RETURN, aby wprowadzić 123.12, pojawi się znak ostrzegawczy i wyskakujące okienko z napisem "numer zapisany jako tekst"

  1. Jako dalszą komplikację, jeśli chcesz wprowadzićnumer 0123 w komórce z formatem NUMERIC, i mieć zapisany tekst "0123" można wprowadzić jako "0123" oznacza, że ​​Excel powinien przechowywać wartość z typem danych tekstowych. Jest to przydatne.
    Zauważ, że gdybyś użył LEFT({acell stroing "0123},1) to zwróci "0". Co jest w porządku. Zwróć też uwagę, że jeśli skopiujesz i wkleisz (tylko wartości) komórkę formatu numerycznego przechowującą "0123 w komórce o ogólnym formacie," nie będzie już wyświetlane dla komórki i otrzymasz zielone ostrzeżenie "liczba zapisana jako tekst". Co jest w porządku, ale warto być tego świadomym.

  2. Formuła =TEXT("123","0###") tworzy wartość z tekstowym typem danych. Jeśli skopiujesz i wkleisz wynik, stanie się wartością danych z tekstowym typem danych.

  3. Formuła T jest przydatna, ponieważ można jej użyć do ustalenia, czy typ danych wartości przechowywanej w komórce to TEKST czy nie. =T(0123) = "" =T("0123") = 0123

  4. Jeśli odwołujesz się do komórki w formule, która dodaje 1do wartości komórki, typ danych komórki i typ danych wartości nie mają wpływu na obliczenia. Wartość danych jest konwertowana na liczbę konieczną, niejawnie.

  5. Jak można się spodziewać, podczas wklejania danych dokomórki, jeśli zdecydujesz się dopasować format docelowy, a komórki, do których wklejasz dane, użyje formatu TEKST, wszystkie dane z wiodącymi "0" będą miały zachowane cyfry 0.

Czy ktokolwiek czytał tak daleko?

Odpowiedzi:

0 dla odpowiedzi № 1

Jeśli chcesz pokazać poprzednie zera na numerze,pod warunkiem, że masz stałą liczbę cyfr przed kropką dziesiętną, możesz dostosować format komórek, np. "0000,00". Ten przykład zawsze pokazuje cztery cyfry przed kropką dziesiętną i dwie kolejne; ma swoje ograniczenia, ale jest bardzo przydatny dla np. kody produktów. jeśli standaryzujesz na 7-cyfrowych kodach, ustaw niestandardowy format jako "0000000" i "0001234" pozostaną poprawne (nie "1234") i nadal będą rozpoznawane jako liczby.