Excel vba-如何用复杂值替换单元格

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 |

我有两张床单。导线和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
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站点的代码。你试过什么?您尝试的代码的具体问题在哪里?我编辑了问题。我是新手,仍然不知道如何使用好编辑器。但是问题是什么?您在实现此功能时遇到的具体问题是什么?编辑您的问题并将代码放在其中,而不是使用标记的注释,将有助于获得更多的响应。