我试图根据任意单元格的值,获取从E到BH的特定范围内的整行数据。例如,如果单元格P,3上的值为“红色”,则我希望选择从E3到BH,3的整个范围。
此外,如果F9中的单元格上有值“黄色”,我希望选择从E9到BH9的整行
到目前为止,我一直在尝试从字符串“my text”中获取行,但它不起作用。我计划以与类似的方式获取行和列,以便根据文本获取从e(行)到bh(行)的行
Dim rng1 As Range
Set rng1 = Sheets("Table").UsedRange.Find("my text", xlValues, xlWhole)
Debug.Print "row is: " & rng1
迟到了,试图展示另一种方法,演示2019版的动态可能性,以及巧妙地使用范围函数:
Sub ExampleCall()
'[0] define search item
Const SearchItem As String = "My text"
Dim rng As Range: Set rng = Sheet1.UsedRange ' Project's sheet Code(Name)
'[1] evaluate condition
Dim condition$: condition = "=IF(" & rng.Address & "=""" & SearchItem & """,ROW(" & rng.Address & "),"""")"
Dim chk: chk = Evaluate(condition)
'[2] get findings
Dim rng1 As Range: Set rng1 = Range("E" & rng.Rows.Count + 1) ' set dummy range (avoiding later checks for Is Nothing)
Dim i As Long
For i = 1 To UBound(chk)
If Not IsError(Application.Average(Application.Index(chk, i, 0))) Then
Set rng1 = Union(rng1, Intersect(Rows(i), Range("E:BH")))
'' ... or do something with data field row Application.Index(chk, i, 0)
' ...
End If
Next i
'[3] select rows with findings (after removing dummy from union range)
If rng1.Areas.Count > 1 Then rng1.Areas(1).Delete ' delete dummy
rng1.Select
End Sub
>
注意关键部分:
Const CopyColsAddress As String = "E:BH"
Set ccrg = ws.Columns(CopyColsAddress)
ccrg.Rows(i)
代码
Option Explicit
Sub selectRowRanges()
' Constants
Const wsName As String = "Table"
Const FirstRow As Long = 2
Const CopyColsAddress As String = "E:BH"
Const CritColsList As String = "F,P"
Const CriteriaList As String = "Yellow,Red"
' Workbook
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
' Worksheet
Dim ws As Worksheet: Set ws = wb.Worksheets(wsName)
' Last Row
Dim cel As Range
Set cel = ws.Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious)
If cel Is Nothing Then Exit Sub
Dim LastRow As Long: LastRow = cel.Row
If LastRow < FirstRow Then Exit Sub
' Copy-Columns Range
Dim ccrg As Range: Set ccrg = ws.Columns(CopyColsAddress)
' Criteria
Dim CritCols() As String: CritCols = Split(CritColsList, ",")
Dim Criteria() As String: Criteria = Split(CriteriaList, ",")
Dim cUpper As Long: cUpper = UBound(CritCols)
' Additional Variables
Dim trg As Range ' Total Range
Dim i As Long ' Range Row Counter
Dim n As Long ' Criteria Counter
' Loop and combine matched row ranges in Total Range.
For i = FirstRow To LastRow
For n = 0 To cUpper
If ws.Cells(i, CritCols(n)).Value = Criteria(n) Then
If trg Is Nothing Then
Set trg = ccrg.Rows(i)
Else
Set trg = Union(trg, ccrg.Rows(i))
End If
Exit For
End If
Next n
Next i
' Select (Copy, Delete)
If Not trg Is Nothing Then
' Often we do something like:
'trg.Copy Sheet2.Range("A2")
ws.Activate
trg.Select
End If
End Sub
可能使用Intersect和ENTIROW。请注意,您还应该使用“如果不存在,则rng1为Nothing”测试查找是否成功。
Set rng1 = Sheets("Table").UsedRange.Find(What:="my text", LookIn:=xlValues, LookAt:=xlWhole)
If Not rng1 Is Nothing Then
Dim theNewRange As Range
Set theNewRange = Intersect(rng1.EntireRow, Range("E:BH"))
End If
使用rng1的较短备选方案。行:
If Not rng1 Is Nothing Then
Dim theNewRange As Range
Set theNewRange = Range("E:BH").Rows(rng1.Row)
End If
null 如您所料,A3将导致。现在将A2的格式更改为会计,使用小数点后2位。A2现在读,但是基础值仍然是,所以A3仍然是。 VBA 制作一个新模块并添加以下函数: null 和具有相同的基础值,但和没有,尽管它们都是使用和的方法计算的。 ()中的表达式正在访问和的实际基础值。如何在VBA中访问这些值?
问题内容: 当我读取excel数字单元格值时,我得到带小数的输出。例如:79读数为79.0,0.00读数为0.0。我编写的应用程序代码是: 问题答案: Stack Overflow上经常出现这个问题,因此建议您仔细阅读许多类似的问题,以找到答案! Excel将文件格式中的几乎所有数字都存储为浮点值,这就是为什么POI会为您返回数字单元格的双精度数字,因为这就是真正的数字。如果希望它看起来像在Exc
在Java中,我应该得到的输出是
有人能帮忙吗?我有一个现有代码,该代码当前根据V列中的单元格值(上诉记录)将整行数据从一张表(质量日志)复制到另一张表(上诉日志)。 之前,它已经从原始(质量日志)表中删除了该行,但我现在希望更改代码,以便将单元格值更改为(正在上诉),然后将其移动到下一页(上诉日志)。 请参阅下面我的代码。我已用**表示我试图更改代码
问题内容: 我正在使用apache POI读取Excel文档。至少可以说,到目前为止,它已经可以满足我的目的。但是令我震惊的一件事是将单元格的值提取为HTML。 我有一个单元格,用户将在其中输入一些字符串并应用某种 格式(例如,项目符号/数字/粗体/斜体) 等。 因此,当我阅读它时,内容应为 HTML 格式,而不是POI给出的纯字符串格式。 我几乎遍历了整个POI API,但找不到任何人。我只想保
问题内容: 我目前正在研究一个使用Apache POI读取Excel文件的项目。 我的任务似乎很简单,我只需要获取在excel文件中显示的单元格值即可。我知道要根据单元格的单元格类型执行switch语句。但是如果数据是这样的 我做的时候POI给我。当我强制该单元格为字符串类型并执行此操作后,它就会给我。我需要的是数据在excel中的显示方式。 我发现有人告诉使用类,但据我了解,它要求您的代码了解单