New-ConditionalText.ps1

function New-ConditionalText {
    param(
        #[Parameter(Mandatory=$true)]
        $Text,
        [System.Drawing.Color]$ConditionalTextColor="DarkRed",
        [System.Drawing.Color]$BackgroundColor="LightPink",
        [String]$Range,
        [OfficeOpenXml.Style.ExcelFillStyle]$PatternType=[OfficeOpenXml.Style.ExcelFillStyle]::Solid,
        [ValidateSet(
               "LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual",
            "NotEqual","Equal","ContainsText","NotContainsText","BeginsWith","EndsWith",
            "Last7Days","LastMonth","LastWeek",
            "NextMonth","NextWeek",
            "ThisMonth","ThisWeek",
            "Today","Tomorrow","Yesterday",
            "DuplicateValues",
            "AboveOrEqualAverage","BelowAverage","AboveAverage",
            "Top", "TopPercent"
        )]
        $ConditionalType="ContainsText"
    )

    $obj = [PSCustomObject]@{
        Text                 = $Text
        ConditionalTextColor = $ConditionalTextColor
        ConditionalType      = $ConditionalType 
        PatternType          = $PatternType 
        Range                = $Range
        BackgroundColor      = $BackgroundColor 
    }

    $obj.pstypenames.Clear()
    $obj.pstypenames.Add("ConditionalText")
    $obj       
}