Excel'deki hücre içindeki kısmi metni boyama


13

Excel'de, tam bir hücreyi değerinden yola çıkarak dinamik olarak renklendirmenin birkaç yolu vardır, ancak değerine göre hücrenin yalnızca bir bölümünü dinamik olarak renklendirmenin herhangi bir yolu var mı?

Örneğin, aşağıdakine benzer bir rapor oluşturduğumu varsayalım:

 _________________________
|       |    Dec    | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|

Bu senaryoda, hücrede bulunan dolar değerlerini 75 $ ve 55 $ değil, yalnızca yüzde değerlerini (% -25) ve (+% 10) renklendirmek istiyorum. Soruna ek olarak, renklendirme dinamik olmalıdır (pozitif için yeşil, negatif değerler için kırmızı) ve bu hücreler referanstır (bu nedenle manuel renklendirme tablodan çıkar).

Yerleşik TEXT()işlevi kullanmayı denedim , ama bu da işe yaramadı. Özellikle I güvenilir =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")burada A1dolar miktarına hücre başvurusudur ve A2yüzde delta hücre referanstır.

Sinir bozucu şey, özel biçimlendirmenin [Green]0%;[Red](-0%)tüm hücreye uygulandığında (özel sayı biçimlendirme bölümü aracılığıyla) iyi çalıştığı, ancak TEXT()işlevle uygulandığında çalışmayı durdurmasıdır. Peki, bir hücrenin içindeki kısmi bir değeri nasıl renklendirebilirim?


1
Excel işlevleri yapamaz, koşullu biçimlendirme yalnızca tüm hücrelere uygulanır ve özel sayı biçimleriyle olasılıkları tükettiğiniz anlaşılır. Yine de VBA'da yapılabilir. (Basit bir örnek olarak, buraya bir bakın . Merak ediyorum. Bir hücrede iki sayı nasıl elde edersiniz, belki onları dize olarak inşa edersiniz?
chuff

@chuff Evet, Excel'de (her satır için sabit genişlik sütun boyutu) ızgara sınırlamalarını aşabilmeleri için onları dizeler olarak oluşturuyordum.
Musa

Yanıtlar:


8

Bu problemin üstesinden gelmek için keşfettiğim iki yaklaşım vardı ve ikisi de gerçekten optimal değildi.

İlk yaklaşım, dizeleri iki ayrı sütuna bölmekti, bu şekilde rengini ayarlamak için daha önce açıklanan özel biçimlendirmelerden birini kullanabilirdim. Bu ideal bir çözüm değildir, çünkü fazladan sütunu alabilmek için raporun "görünümü ve hissi" nden taviz vermek zorunda kaldım.

İkinci yaklaşım, VBA / makroları kullanmaktır, ki bu özel senaryoda kaçınmayı seçmiş olsam da, bu görevle ilgiliydi. Tüm çalışma kodunu yazdırmayacak olsam da, temelde bu kaynar:

  1. Ayarlamak istediğiniz hücreyi bulun (içinden ActiveCellveya bir döngüden)
  2. InstrDizede rengi değiştirmek istediğiniz konumu bulmak için işlevi kullanın
  3. Metin uzunluğu değişkense, Instrdizede rengi durdurmak istediğiniz konumu bulmak için tekrar kullanın
  4. Characters(start, length)Daha önce bulunan değerleri ileterek değiştirmek istediğiniz karakterleri vurgulamak için işlevi kullanın .
  5. İle renk değiştirme Font.Color = RGB(r,g,b)

2
Oy vermek için yeterli temsilciniz yok, ama bu benim ilkim olurdu: "Çalışma kodunun tamamını yazdırmayacağım halde" - neden olmasın? Böyle bir forum için oldukça yararlı.
hmedia1

6

Makro kullanan bir örnek burada bulunabilir:

Excel'deki hücrelerde metnin bir kısmını renklendirmek için makro

Excel Makroları - Hücrelerin Renkli Bölümüne Döngü İçin

Hava durumu verileri satırlarında döngü oluşturmak için bir hücre makrosu ve hücre metninin serin kısmı sıcak ve mavi kelimesini içeriyorsa kırmızı renkte döngü yapmak için bir Excel makrosu kullanın:

Talimatlar

  1. Excel'deki Geliştirici sekmesini tıklayın
  2. Visual Basic simgesini tıklatın ve aşağıdaki makro metni 1 kod penceresine kopyalayın
  3. Excel görünümüne geri dönmek için Excel simgesini tıklayın
  4. Makrolar simgesini tıklayın, TextPartColourMacro adlı makroyu seçin ve çalıştır'ı tıklayın

Tamamlanan Makro:

Sub TextPartColourMacro()

' Declarations and Initialisation
Dim Row As Integer, Col As Integer
Dim CurrentCellText As String
Col = 1

' Loop Through Rows 2 to 5
For Row = 2 To 5

    ' Get Text in Current Cell
    CurrentCellText = ActiveSheet.Cells(Row, Col).Value

    ' Get the Position of the Text Hot and Cool
    HotStartPosition = InStr(1, CurrentCellText, "Hot")
    CoolStartPosition = InStr(1, CurrentCellText, "Cool")

    ' Colour the Word Hot Red
    If HotStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 3).Font.Color = RGB(255, 0, 0)
    End If

    ' Colour the Word Cool Blue
    If CoolStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 4).Font.Color = RGB(0, 0, 255)
    End If

Next Row
End Sub

2
Süper Kullanıcının amacı, başka yerdeki cevaplara bir bağlantı koleksiyonu yerine bir bilgi tabanı oluşturmaktır. Dış bağlantılar kopabilir, bu durumda cevabınızın değeri olmayacaktır. Lütfen yanıtınıza gerekli bilgileri ekleyin ve bağlantıyı atıf ve daha fazla okuma için kullanın.
fixer1234

Bu iyi bir çözüm, dağıtacağım.
htm11h

0

Köşeli parantez içindeki metin "-" karakteri içeriyorsa, bu makro köşeli parantez içeren seçili metin aralığını kırmızıya renklendirir, aksi takdirde yeşil renge boyar. Köşeli ayraçlar dışındaki tüm metinler değişmeden kalır.

Dim rngCell As Range
Dim CharCount As Integer
Dim BracketBegin As Integer
Dim BracketEnd As Integer
Dim strToColour As String

For Each rngCell In Selection
    CharCount = Len(rngCell)
    BracketBegin = InStr(1, rngCell, "(")
    BracketEnd = InStr(1, rngCell, ")")
    With rngCell.Characters(BracketBegin, CharCount - BracketEnd)
        ' Pull out string to check for +/-
        strToColour = rngCell.Characters(BracketBegin, CharCount - BracketEnd).Text
        ' If negative, colour red, otherwise green
        If InStr(strToColour, "-") Then
            .Font.Color = vbRed
        Else
            .Font.Color = vbGreen
        End If
  End With
Next rngCell
End Sub

[Example][1]


  [1]: https://i.stack.imgur.com/4lyN4.png

-1

Vurgulanmak istediğiniz metnin üzerine satır ekleyin, satırı yüksek ışığa ihtiyaç duyduğunuz kadar geniş yapın, metin rengini sarıya (veya seçtiğiniz herhangi bir renge) değiştirin ve satırın opaklığını istediğiniz gibi azaltın.


-1

Excel sayfa ızgarasını (hücre genişliği) bir karakter boşluğuna eşit olarak bölerseniz, MS EXCEL'de bir çözüm olmasa da bir yapılabilir yaklaşım, seçtiğiniz rengi kullanabilirsiniz:

Örnek Sayfa

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.