我正在创建一个Excel工作簿,该工作簿将使用VBA将两个过滤器应用于请求的项目表。 Q列包含“硬件”或“智能手机”,R列包含“是”或“否”。其他字段的内容无关紧要。过滤器将应用于“硬件”的Q列和“否”的R列。对于同时满足两个条件的每个项目,它们将被粘贴到另一个选项卡上的特定行A11中,该选项卡在A10中包含标题行。在粘贴的行下方,我想要两个空白行,然后是一行文本“ Your Text Here”,然后将重复标题行。最后,在将列Q过滤器保留在“硬件”上的情况下,将列R过滤器切换为“是”。此过滤器产生的行将被复制到第二个标题行的下面。
然后,“硬件”标签将包含以下内容,
我已经修改了一个VBA脚本,我在此站点上找到了它,这要感谢Siddharth Rout。 How to copy a line in excel using a specific word and pasting to another excel sheet?
运行宏时,它将正确应用两个过滤器,并将正确的行复制到“硬件”选项卡中。但是,我希望将其粘贴到标题行下方的单元格A11中,但数据实际上是将其覆盖并复制到单元格A10中。
因为我不能停止覆盖标题行或将第一组放到正确的位置,所以我不确定如何在其下添加所需的内容以及如何确定第二组将要去的地方。
我试图更改'After:=。Range(“ A11”),_'中的值,但是我很可能会误解它的作用。我希望它始终从A11行开始,即使它们为空,也不要触摸第10行及以上的任何内容。
Dim wb1 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim copyFrom As Range
Dim lRow As Long
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("Raw")
With ws1
.AutoFilterMode = False
lRow = .Range("Q" & .Rows.Count).End(xlUp).Row
With .Range("Q1:R" & lRow)
.AutoFilter Field:=1, Criteria1:="Hardware" '-> Hardware Items
.AutoFilter Field:=2, Criteria1:="No" '-> Not Business Continuity
Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
.AutoFilterMode = False
End With
'-> Destination
Set ws2 = wb1.Worksheets("Hardware")
With ws2
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A11"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 1
End If
copyFrom.Copy .Rows(lRow)
End With
wb1.Save
End Sub
如果我的总结会更好,非常感谢任何可能做出回应和道歉的人。
答案 0 :(得分:0)
如果您知道必须将范围粘贴到A11中,则可以直接将其粘贴到其中。
在With ws2内use actix_web::{web, App, HttpRequest, HttpServer, Responder};
use mongodb::{options::ClientOptions, Client};
async fn greet(req: HttpRequest) -> impl Responder {
let name = req.match_info().get("name").unwrap_or("World");
format!("Hello {}!", &name)
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
// Parse a connection string into an options struct.
let mut client_options = ClientOptions::parse("mongodb://localhost:27017")?;
// Manually set an option.
client_options.app_name = Some("My App".to_string());
// Get a handle to the deployment.
let client = Client::with_options(client_options)?;
// List the names of the databases in that deployment.
for db_name in client.list_database_names(None)? {
println!("{}", db_name);
}
HttpServer::new(|| {
App::new()
.route("/", web::get().to(greet))
.route("/{name}", web::get().to(greet))
})
.bind("127.0.0.1:8000")?
.run()
.await
}
这会将范围粘贴到A11行中,然后您可以得到下一个最后一行。得到X by(将它定义为Dim lrow as Long)。
现在,您有了包含数据(X)的最后一行。如您所述,下一个数据行是X + 5。首先通过
清除初始过滤器With ws2
copyFrom.Copy .Range("A11")
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
因此,调整代码以使用条件“是”进行其他过滤,然后通过
粘贴ActiveSheet.AutoFilter.ShowAllData