excel - VBA宏循环遍历行中的列并比较值
问题描述
预先感谢您花时间阅读并帮助我。我正在处理的宏的一部分应该遍历行并比较行的最后两个单元格中的值(每行的列将不同,因此我不能只取特定两列中的值进行比较)。
稍后,宏将根据发现更改其他单元格中的值。
我遇到的困难是分配行中最后一个单元格的值和最后一个单元格的值。
我的代码是:
Sub compareValues()
Dim allInLastRow As Long
Dim allInLastCol As Long
Dim i As Integer
Dim x As Integer
Dim allInWs As Worksheet
Set allInWs = ThisWorkbook.Worksheets("All In")
allInLastRow = allInWs.Range("C" & Rows.Count).End(xlUp).Row
For i = 2 To allInLastRow 'scans through all the rows
allInLastCol = allInWs.Cells(i, Columns.Count).End(xlToLeft).Column
For x = 1 To allInLastCol 'scans through all the columns in each row
'in here I need to have the condition that compares lastcell value to 2nd last cell value and this is the one I have a problem with
Next x
Next i
End Sub
任何朝着正确方向轻推将不胜感激。我很想从谷歌得到一个答案,但我不能真正以一种对搜索引擎有意义的方式来阐述这个问题:-)
再次感谢您的帮助!
解决方案
我可以想到要查找行中的最后一列,然后查找行中的倒数第二列。
Sub LstRw_Stuff()
Dim Rws As Long, r As Range, fRng As Range, col1 As Long, col2 As Long
Dim rng1 As Range, rng2 As Range
Set r = Range("A1")
Rws = Cells.Find(What:="*", After:=r, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For x = 2 To Rws
col1 = Cells(x, Columns.Count).End(xlToLeft).Column
Set rng1 = Cells(x, col1)
s = rng1.Value
rng1.ClearContents
col2 = Cells(x, Columns.Count).End(xlToLeft).Column
Set rng2 = Cells(x, col2)
rng1 = s
'do whatever need to be done for comparing
If rng1 > rng2 Then
MsgBox "yep" & rng1.Value & ">" & rng2.Value
Else
MsgBox "Nope" & rng1.Value & "<" & rng2.Value
End If
Next x
End Sub
推荐阅读
- elixir - 如何清除 Phoenix LiveView 表单中的文本区域?
- python - 如何在同一选项卡中使用硒功能?(在蟒蛇上)
- reactjs - React,使用 AppSync(无服务器应用程序)存储的数据过多
- ruby-on-rails - 获取磁盘存储和 S3 存储上 ActiveStorage 文件的路径
- java - 如何处理 UsernameNotFoundException 春季安全
- ios - ios - 我们可以通过单个代码/文件更改所有标签的字体、大小吗?
- android - 来自 Android 的 Web 服务调用失败
- typescript - 跨并发线程使用的类的相同实例
- javascript - iOS Swift 5:如何在 WKWebView 中执行 js 文件?
- css - Dart sass 忽略 Foundation sass 文件中的导入