Veritabanını içeri aktarılan bir tabloda hücrenin sayı biçimini nasıl değiştirebilirim?


2

Buna benzeyen bir sayfam var.

    A  |     B      | C
   ----------------------
    2  |  Okay      |  0
    3  |  Not okay  | 0

Hücrenin C3yeşil hata göstergesine sahip ve "Bu hücrede bulunan sayı metin olarak biçimlendirilmiş veya kesme işareti önce" yazıyor ve elbette sola dayalı.

Her iki hücrelerin biçimini görüntülediğimizde C2ve C3ikisi de "Genel" olarak gösteriyor.

“NumberFormat” ı incelemek için VBA kullandığımda her ikisi de “Genel” olarak görünüyor.

Bu arada, Office 2010 kullanıyorum.

VBA kodunu kullanarak metni metinden genel olarak değiştirerek bunu düzeltmek istiyorum (bu, bir dizi çalışma sayfasında düzinelerce hücreye gerçekleşir), ancak söz konusu hücrelerin Genel olarak biçimlendirilmiş olduğuna inanıyorsa bunu nasıl yapabilirim ?


Girdiğiniz bu veri mi, yoksa başka bir yerden mi geldi?
CLockeWork

Başka bir yerden geliyor; Bir Excel eklentisi, bir veritabanından veri almak için bir sorgu çalıştırmıştır. Çok tutarsız, hücrelerin büyük çoğunluğunda bu sorun yok.
Garry Bristow

Yanıtlar:


2

Bu, Excel'in sayının metin olarak saklandığını düşündüğü zaman olabilir (biçimini değiştirseniz bile olmasa bile), diğer ucunda kötü bir şekilde kodlanmıştır.

Metin olarak saklanan sayılar için çok basit bir düzeltme, sayıyı sayıya dönüştüren bir formül içeren fazladan bir sütun eklemektir.

=$C2*1

Ve sadece aşağı sürükleyin ve sonra buna bakın. Canlı bir bağlantılı tabloyla çalışıyorsanız, bu sütunun tablonun sonunda bulunması, formül aralığının veri aralığıyla genişleyeceği anlamına gelir.


Elbette VBA ile, sütundaki her bir değeri bu formülün sonucuyla değiştiren verilerden geçen bir döngü çalıştırabilirsiniz.


İyi fikir, VBA döngü işini yaptı. Şimdi endişelenmek sadece hücreleri değiştirdiğim için değiştirmem gerekmiyor çünkü problemleri yok. Excel'in sandığı gibi, hücrenin metin biçiminde olup olmadığını soracağım. Aldırma
Garry Bristow

2

İşte hile yapacak bir VBA pasajı.

Sub FixTextFormattedNumbers()
Dim s As Worksheet, r As Range
'Set target sheet and range
Set s = Sheets("Sheet1")
Set r = s.Range("A1:A10")

For Each c In r
    On Error Resume Next
    c.Value = CDbl(c.Value)
Next c
End Sub

Hata işleme, belirtilen aralıkta gerçek metniniz olması durumunda.


0

Bu genellikle veri yapıştırırken veya içe aktarırken olabilir. Bir sütunun tamamıysa, düzeltmenin en iyi yolu, temelde Excel'in varsayımları üzerinde ne tür bir veri olduğu konusunda daha fazla kontrol alarak sütunu yeniden içe aktarmaktır.

Bunu yapmanın yolu:

  1. Bu konuyla ilgili bir sütunu vurgulayın

  2. Seç Data->Text To Columns

  3. Tıklayın Finish(Varsayılanlar bu durumda çalışır - Sınırlandırılmış-> Sekme -> Genel (format)). Tersini yapmak zorundaysanız (numaraları yeniden içe aktarın ancak metin olarak kabul edilmeye zorlayın), üçüncü seçeneği Metin olarak değiştirirsiniz.


Tüm sütunda değil. Bir sütun tipik olarak 900 satıra sahip olur ve belki 70 veya 80 tanesi bu problemi yaşar. Bunu el ile yapmak istemiyorum, bunun VBA kodu ile ele alınabileceğini varsaydım, ancak görünmüyor.
Garry Bristow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.