Excel vba-如何用复杂值替换单元格
我有两张床单。导线和BOM表 电线如下所示:Excel vba-如何用复杂值替换单元格,vba,excel,Vba,Excel,我有两张床单。导线和BOM表 电线如下所示: | Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe | |---------|----------|-----|----------|-----|-------| | 712001 | AJ4 | 11 | LSTS | 7 | GE | | 712002 | AJ4 | 10 | LSTS | 8 | SW | | 712003 |
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | GSR2 | 2 | GN |
| 712005 | AJ4 | 18 | GSR2 | 1 | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
| Con |
|------|
| GSR2 |
| AJ4 |
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | "GSR2_2" | "1" | GN |
| 712005 | AJ4 | 18 | "GSR2_1" | "1" | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
Sub Macro1()
'
' Macro1 Macro
'
'
Dim Col As Integer
Dim Row As Integer
For Col = 2 To 4
For Row = 2 To 10
colo = Row + 1
Rows = Row + 1
Sheets("WIRES").Columns(2).Replace What:=Sheets("BOM").Cells(Row, 1).Text, Replacement:=Sheets("WIRES").Cells(Row, 2).Text & "_" & Sheets("WIRES").Cells(Rows, colo).Text, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Row
Next Col
End Sub
BOM表如下所示:
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | GSR2 | 2 | GN |
| 712005 | AJ4 | 18 | GSR2 | 1 | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
| Con |
|------|
| GSR2 |
| AJ4 |
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | "GSR2_2" | "1" | GN |
| 712005 | AJ4 | 18 | "GSR2_1" | "1" | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
Sub Macro1()
'
' Macro1 Macro
'
'
Dim Col As Integer
Dim Row As Integer
For Col = 2 To 4
For Row = 2 To 10
colo = Row + 1
Rows = Row + 1
Sheets("WIRES").Columns(2).Replace What:=Sheets("BOM").Cells(Row, 1).Text, Replacement:=Sheets("WIRES").Cells(Row, 2).Text & "_" & Sheets("WIRES").Cells(Rows, colo).Text, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Row
Next Col
End Sub
我想在excel中执行一个宏,从图纸BOM表中的行、图纸导线中搜索每个值,并在其中找到要替换为值的值。在此之后,将1个电池放在更换的电池前面。
例如,它必须在铁丝网中搜索GSR2,并在哪里找到GSR2,然后用GSR2_2重新使用它;下一行将GSR2替换为GSR2_1。
宏运行后,我希望表如下所示:
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | GSR2 | 2 | GN |
| 712005 | AJ4 | 18 | GSR2 | 1 | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
| Con |
|------|
| GSR2 |
| AJ4 |
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | "GSR2_2" | "1" | GN |
| 712005 | AJ4 | 18 | "GSR2_1" | "1" | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
Sub Macro1()
'
' Macro1 Macro
'
'
Dim Col As Integer
Dim Row As Integer
For Col = 2 To 4
For Row = 2 To 10
colo = Row + 1
Rows = Row + 1
Sheets("WIRES").Columns(2).Replace What:=Sheets("BOM").Cells(Row, 1).Text, Replacement:=Sheets("WIRES").Cells(Row, 2).Text & "_" & Sheets("WIRES").Cells(Rows, colo).Text, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Row
Next Col
End Sub
我试过这个:
我试过这样的方法:
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | GSR2 | 2 | GN |
| 712005 | AJ4 | 18 | GSR2 | 1 | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
| Con |
|------|
| GSR2 |
| AJ4 |
| Ltg-Nr_ | Kurzname | Pin | Kurzname | Pin | Farbe |
|---------|----------|-----|----------|-----|-------|
| 712001 | AJ4 | 11 | LSTS | 7 | GE |
| 712002 | AJ4 | 10 | LSTS | 8 | SW |
| 712003 | KM_23.1 | 1 | KM_12.4 | 1 | BR |
| 712004 | AJ4 | 19 | "GSR2_2" | "1" | GN |
| 712005 | AJ4 | 18 | "GSR2_1" | "1" | SW |
| 712006 | AJ4 | 46 | CR_31AB | 1 | BR |
| 712007 | AJ4 | 49 | CR_CANP | 1 | OR/SW |
| 712008 | AJ4 | 50 | CR_CANM | 1 | OR/BR |
Sub Macro1()
'
' Macro1 Macro
'
'
Dim Col As Integer
Dim Row As Integer
For Col = 2 To 4
For Row = 2 To 10
colo = Row + 1
Rows = Row + 1
Sheets("WIRES").Columns(2).Replace What:=Sheets("BOM").Cells(Row, 1).Text, Replacement:=Sheets("WIRES").Cells(Row, 2).Text & "_" & Sheets("WIRES").Cells(Rows, colo).Text, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Row
Next Col
End Sub
我做了这个,它完全符合我的要求。 谢谢你的回答
Dim roww, rowb As Integer
For roww = 2 To 150
For rowb = 1 To 10
Sheets("WIRES").Select
Cells(roww, 2).Select
If Selection.Value = Sheets("BOM").Cells(rowb, 1).Value Then
Selection.Value = Selection.Value & "_" & Selection.Offset(0, 1)
Selection.Offset(0, 1).Value = "1"
End If
Sheets("WIRES").Select
Cells(roww, 4).Select
If Selection.Value = Sheets("BOM").Cells(rowb, 1).Value Then
Selection.Value = Selection.Value & "_" & Selection.Offset(0, 1)
Selection.Offset(0, 1).Value = "1"
End If
Next rowb
Next roww
堆栈溢出不是me站点的代码。你试过什么?您尝试的代码的具体问题在哪里?我编辑了问题。我是新手,仍然不知道如何使用好编辑器。但是问题是什么?您在实现此功能时遇到的具体问题是什么?编辑您的问题并将代码放在其中,而不是使用标记的注释,将有助于获得更多的响应。