Excel에서 셀 내 부분 텍스트 색칠


13

Excel에는 전체 셀의 값을 기준으로 동적으로 색상을 지정하는 몇 가지 방법이 있지만 해당 값을 기준으로 셀의 일부만 동적으로 색상을 지정하는 방법이 있습니까?

예를 들어, 다음과 같은 보고서를 작성한다고 가정하십시오.

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

이 시나리오에서는 셀에있는 달러 값 $ 75 및 $ 55가 아니라 백분율 값 (-25 %) 및 [+ 10 %) 만 채색하려고합니다. 문제는 착색이 동적이어야한다는 것입니다 (양수의 경우 녹색, 음수의 경우 빨간색).이 셀은 참조입니다 (따라서 수동 채색은 테이블에서 벗어남).

내장 TEXT()함수를 사용해 보았지만 작동하지 않았습니다. 특히 나는 달러 금액에 대한 셀 참조가 =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")어디에 A1있고 A2델타 백분율에 대한 셀 참조가 무엇인지 시도했습니다 .

실망스러운 점은 사용자 정의 서식 [Green]0%;[Red](-0%)이 전체 셀에 적용될 때 (사용자 정의 숫자 서식 섹션을 통해) TEXT()제대로 작동 하지만 함수 를 통해 적용하면 작동이 중지된다는 것입니다. 그렇다면 셀 내에서 부분 값을 사용자 정의 색상으로 지정할 수 있습니까?


1
Excel 기능으로는 불가능하며 조건부 서식은 전체 셀에만 적용되며 사용자 지정 숫자 형식으로 가능성을 소진 한 것처럼 들립니다. 그러나 VBA에서 가능할 수 있습니다. (간단한 예를 보려면 여기를 살펴 보십시오 . 궁금합니다. 하나의 셀에 두 개의 숫자를 가져 와서 문자열로 만드는 방법은 무엇입니까?
chuff

@chuff 예, 문자열로 작성하여 Excel의 그리드 제한 (각 행의 고정 너비 열 크기)을 해결할 수있었습니다.
Moses

답변:


8

이 문제를 해결하기 위해 내가 발견 한 두 가지 접근법이 있었으며 실제로는 최적의 방법도 없었습니다.

첫 번째 접근법은 문자열을 두 개의 별도 열로 나누는 것입니다. 이렇게하면 앞에서 설명한 사용자 정의 형식 중 하나를 사용하여 색상을 설정할 수 있습니다. 추가 열을 수용하기 위해 보고서의 "모양과 느낌"을 타협해야했기 때문에 이상적인 솔루션이 아닙니다.

두 번째 방법은 VBA / 매크로를 사용하는 것입니다.이 특정 시나리오에서는 피하도록 선택했지만 작업에 달려있었습니다. 전체 작업 코드를 인쇄하지는 않지만 필수 사항은 다음과 같습니다.

  1. 조정할 셀 찾기 (통과 ActiveCell또는 루프)
  2. Instr함수를 사용 하여 색상을 수정하려는 문자열의 위치를 ​​찾으십시오.
  3. 텍스트 길이가 가변적이면 Instr다시 사용 하여 색상을 멈추려는 문자열의 위치를 ​​찾으십시오.
  4. Characters(start, length)기능을 사용하여 수정하려는 정확한 문자를 강조 표시하고 앞에서 찾은 값을 전달하십시오.
  5. 로 색상 변경 Font.Color = RGB(r,g,b)

1
downvote에 대한 충분한 담당자가 없지만 이것이 첫 번째 일 것입니다 : "전체 작업 코드를 인쇄하지 않는 동안" -왜 안됩니까? 이와 같은 포럼에 매우 유용합니다.
hmedia1

5

매크로를 사용하는 예제는 다음에서 찾을 수 있습니다.

Excel에서 셀의 텍스트 일부를 색칠하는 매크로

Excel 매크로-셀의 일부를 채색하는 For 루프

for 루프가 포함 된 Excel 매크로를 사용하여 날씨 데이터의 행을 반복하고, 단어가 포함 된 경우 셀 텍스트의 빨간색 부분과 색이 차가운 단어가 포함 된 경우 셀 텍스트의 색 부분을 빨간색으로 지정하십시오.

명령

  1. Excel에서 개발자 탭을 클릭하십시오
  2. Visual Basic 아이콘을 클릭하고 아래의 매크로 텍스트를 1 코드 창에 복사하십시오.
  3. Excel 아이콘을 클릭하여 Excel보기로 다시 전환하십시오.
  4. 매크로 아이콘을 클릭하고 TextPartColourMacro라는 매크로를 선택한 다음 실행을 클릭하십시오.

완성 된 매크로 :

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
수퍼 유저의 목적은 다른 곳의 답변에 대한 링크 모음이 아닌 지식 기반을 구축하는 것입니다. 외부 링크가 끊어 질 수 있으며,이 경우 답변에 가치가 없습니다. 답에 필수 정보를 포함시키고 귀속 및 추가 자료를 보려면 링크를 사용하십시오.
fixer1234

이것은 좋은 솔루션입니다. 배포하겠습니다.
htm11h

0

이 매크로는 대괄호 안의 텍스트에 "-"문자가 포함되어 있으면 대괄호를 포함하는 선택된 텍스트 범위를 빨간색으로 채색하고 그렇지 않으면 녹색으로 채색됩니다. 대괄호 밖의 모든 텍스트는 변경되지 않습니다.

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

강조 표시하려는 텍스트 위에 선을 삽입하고, 강조 표시 할만큼 선을 넓히고, 텍스트 색상을 노란색 (또는 선택한 색상)으로 변경하고 원하는대로 선의 불투명도를 줄입니다.


-1

엑셀 시트 그리드 (셀 너비)를 문자 공간과 동일하게 나누면 MS EXCEL에서 해결책이 아니지만 가능한 방법 중 하나는 선택한 색상으로 사용할 수 있습니다.

예제 시트

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.