我是VBA的新手并试图在Google上找不到帮助,但是,我不知道如何搜索以下问题。
以下是我的工作表示例,该工作表需要取消展平并且包含超过2500行
//Deletes ninja AND all connected equipments
public static void DeleteNinja(int id)
{
using (var db = new NinjaDbContext())
{
var ninja = db.Ninjas.Where(n => n.Id == id).Single();
db.Entry(ninja).State = EntityState.Deleted;
foreach (var eq in ninja.EquipmentOwned)
{
db.Entry(eq).State = EntityState.Deleted;
}
db.SaveChanges();
}
}
我在VBA中寻找解决方案以获得以下格式的结果
A | B | C | D
Text1 | Dummy1 | 1 | Power1
Text1 | Dummy1 | 1 | Power2
Text1 | Dummy2 | 1 | Power1
Text3 | Dummy3 | 1 | Power1
Text3 | Dummy3 | 1 | Power2
如果(A1,B1)等于(A2,B2),则计数1 + 1并用D1 + D2替换D1单元的内容(POWER1和POWER2(同一单元中的新行))
我想知道是否有人知道该怎么做或者它叫什么?
谢谢!
答案 0 :(得分:0)
你很幸运,因为我很无聊......这样我就会抛出一些能满足你想要的代码。但作为一个缺点(就像没有显示代码的小惩罚),我让它变得缓慢而难以阅读:P
Sub test()
Dim a(2) As Range
Set a(0) = ActiveSheet.Range("A2:D2")
While a(0)(1).Value <> ""
Set a(1) = a(0).Offset(1)
Set a(2) = Nothing
While a(1)(1).Value <> ""
If a(0)(1).Value = a(1)(1).Value And a(0)(2).Value = a(1)(2).Value Then
a(0)(3).Value = a(0)(3).Value + a(1)(3).Value
a(0)(4).Value = a(0)(4).Value & " " & a(1)(4).Value
If a(2) Is Nothing Then
Set a(2) = a(1)
Else
Set a(2) = Union(a(2), a(1))
End If
End If
Set a(1) = a(1).Offset(1)
Wend
If Not a(2) Is Nothing Then a(2).EntireRow.Delete xlUp
Set a(0) = a(0).Offset(1)
Wend
End Sub
不过,请随时询问是否有任何问题;)