excel - 如果在列中找到值,则将其复制到行中的某些元素
问题描述
我想准备一个工具来搜索特定列中的任何内容,如果看到任何内容,请复制此值并将其粘贴到其行上的几个元素中
例如,如果在 G2 中有值“ADD”,那么 A2+B2 + E2 + F2 将是“ADD”到(C 除外)
我很难克服障碍,到目前为止我想出了这个。我知道这段代码很难忍受,但我很少使用 VBA,所以我从来没有机会学习,所以它混合了我在这里找到的内容根据我的要求在stackoverflow上组合
Dim wb as Workbook
Dim ws As Worksheet
wb = ActiveWorkbook.Name
ws = Application.ActiveSheet
With ws
Set myRange = Range("G1", Range("G1").End(xlDown))
For i = 1 to myRange
if i <>"" Then
Range("A1", Range("A1").End(xlToRight)).Select
Range("A1", Range("A1").End(xlToRight)).Value = i.text
[I know this part will do from the first element of A to the last but I dont know how to choose elements I wish if they're not one next to each other]
Next i
End with
解决方案
对于您想要做的事情,您似乎不需要声明“wb”和“ws”。Vba 默认会使用 ActiveSheet。wb 也被声明为工作簿,但 ActiveWorkbook.Name 是一个文本。您的代码将遇到错误。
如果要从 G1 循环到最后输入的单元格,可以参考以下代码: For i = 1 To Cells(Rows.Count,7).End(xlUp).Row
rows.count 指的是 excel 中的最后一行 (1048576)。而“end(xlup)”将在 G 列找到最后一个输入值的单元格。而“.row”返回最后一个单元格的行号。
同样,您可以使用 "Cells(1, Columns.Count).End(xlToLeft)" 查找在第 1 行输入的最后一列的单元格
您可以尝试以下代码:
For i = 1 To Cells(Rows.Count, 7).End(xlUp).Row
If Cells(i, 7).Value <> "" Then
Range(Cells(i, 1), Cells(i, 2)).Value = Cells(i, 7).Value
Range(Cells(i, 4), Cells(i, Columns.Count).End(xlToLeft)).Value = Cells(i, 7).Value
End If
Next i
但是,您提到要复制 C 列以外的内容。因为我不知道您不会复制到该列的实际情况。我只是简单地将代码分成两部分,一个用于 A 和 B 列,另一个用于 D 到最后一列
推荐阅读
- matlab - 如何将 uitable() 保存为 PDF、JPG 等
- c++ - 不能重用从 connect() 获得的变量是否正常?
- reactjs - ModuleParseError:模块解析失败:nextjs 中出现意外字符“�”(1:0)
- regex - 将 pandas 地址拆分为街道和门牌号
- python - 如何将一个模型的字段值分配给另一个模型的字段?
- xml - 在 Nest.js 中获取 Post 请求正文中的 XML
- javascript - jQuery 表单提交按钮根据选中的复选框转到 URL
- javascript - react-spring:使用 useChain 进行缩放和翻译
- vue.js - Vue2 - 路由级别的延迟加载不起作用?
- r - 如何仅针对每个文件中的某些值组合多个 .RDS 文件?