EXCEL问题:如何实现根据输入数值动态显示想要显示的数据范围的大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL问题:如何实现根据输入数值动态显示想要显示的数据范围的大小?相关的知识,希望对你有一定的参考价值。

举个例子:首先输入2年,那么自动计算并显示出24个月的数据;下面改为输入1年,那么只显示12个月的数据(13-24个月的数组自动抹去或隐藏);再次输入30年,那么自动显示360个月的数据。数据都是根据公式和参数自动生成。

你这么说其实不是很规范
你输入2年,到底是从什么时候到什么时候的2年?

我做过一个图表
输入开始日期和结束日期
这2个日期之间的项目收益明细就全部用图表表示出来
取的就是项目有一个关键日期
只要在那2个日期之间,就筛选出来
参考技术A 你的表是怎么样的?

带高亮显示的动态搜索 - Excel VBA

【中文标题】带高亮显示的动态搜索 - Excel VBA【英文标题】:Dynamic Search with highlight - Excel VBA 【发布时间】:2018-01-01 19:24:54 【问题描述】:

我想实现以下目标: 在我的 excel 表中,我有一组数据,我通过创建一个“搜索框”对其应用了动态过滤。 过滤本身可以正常工作,那里没有问题,但是,我想进一步改进它,通过以红色突出显示过滤行中的文本(输入到搜索框中)。 我附上了我希望在最终版本中看到的屏幕截图。

知道如何将其输入到我当前的代码中吗?

一如既往,非常感谢任何帮助! 谢谢!

下面是我用于动态过滤的代码:

Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual


If Len(TextBox1.Value) = 0 Then
    Sheet1.AutoFilterMode = False
Else
    If Sheet1.AutoFilterMode = True Then
        Sheet1.AutoFilterMode = False
        End If

    Sheet1.Range("B4:C" & Rows.Count).AutoFilter field:=1, Criteria1:="*" & TextBox1.Value & "*"

    End If

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

【问题讨论】:

【参考方案1】:

考虑这样的事情 - 在工作表中写下以下内容:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Target <> Range("a1") Then Exit Sub
    SelectAndChange (Target)

End Sub

Private Sub SelectAndChange(strValue As String)

    Dim rngCell     As Range
    Dim rngRange    As Range
    Dim strLookFor  As String
    Dim arrChar     As Variant
    Dim lngCounter  As Long

    If strValue = vbNullString Then Exit Sub

    Application.EnableEvents = False

    Set rngRange = Range("E1:E10")
    rngRange.Font.Color = vbBlack
    strLookFor = Range("A1").Value

    For Each rngCell In rngRange
        For lngCounter = 1 To Len(rngCell) - Len(strLookFor) + 1
            If Mid(rngCell, lngCounter, Len(strLookFor)) = strLookFor Then
                rngCell.Characters(lngCounter, Len(strLookFor)).Font.Color = vbRed
            End If
        Next lngCounter
    Next rngCell

    Application.EnableEvents = True

End Sub

E1:E10 中的值将取决于A1 中的值,如下所示:

【讨论】:

感谢您的代码!这似乎适用于我的代码,但是,有一个小问题。对我来说,如果我双击单元格(A1),字符只会变成红色。我想实时看到这一点。另外,由于某种原因,如果我删除文本,字符仍然是红色的。这些有什么解决办法吗? :) 否则,真的很好! @llorcs - 要“实时”查看操作,请从代码中删除此行:If Target &lt;&gt; Range("a1") Then Exit Sub 关于空单元格,这使得所有的值都变成红色,大约有10种方法可以解决这个问题。其中之一是在代码中添加If strValue = vbNullString Then Exit Sub。我已经添加了它。 @llorcs

以上是关于EXCEL问题:如何实现根据输入数值动态显示想要显示的数据范围的大小?的主要内容,如果未能解决你的问题,请参考以下文章

excel a列输入数值时 b列显示红色

如何根据java中的输入数据顺序/名称动态调用不同的setter方法?

excel两个单元格的数值都达成显示是,有一个未达成显示否

求助关于excel条件格式根据需要显示和隐藏文字

excel或者JMP中能画这种颜色图么?

如何根据多个ID值在Excel表中找出匹配的结果