ค้นหาและแทนที่ค่าหลายค่าภายในเซลล์ที่เลือก


5

ฉันต้องการเรียกใช้การค้นหาและแทนที่ค่าหลายค่าภายในช่วงใน excel ด้วยค่าจาก 2 คอลัมน์: A ด้วยคำเดิม; B พร้อมคำแปล ฉันพบรหัส VBA แล้วเพื่อให้ทำงานได้ 50% แต่รหัสนี้ทำงานบน worskheet ทั้งหมด

เป็นการดีที่ฉันจะสามารถเรียกใช้ในช่วงที่ฉันเลือก โบนัสเพิ่มจะเป็นถ้าฉันสามารถเลือกช่วงการค้นหาได้เช่นกัน

นี่คือสิ่งที่ฉันใช้อยู่ไกลขนาดนี้ ขอบคุณสำหรับความช่วยเหลือของคุณ!

Sub abbrev()
            Dim abvtab() As Variant
            Dim ltsheet As Worksheet
            Dim datasheet As Worksheet
            Dim lt As Range

            'Change Lookup to the sheet name with your lookup table.
            Set ltsheet = Sheets("Lookup")

            'Change Data to the sheet name with your data.
            Set datasheet = Sheets("Data")

            'Change A2 to the top left cell (not the header) in your lookup table.
            'Change B2 to top right cell.
            Set lt = ltsheet.Range("A1", ltsheet.Range("B1").End(xlDown))

            abvtab = lt

            For i = 1 To UBound(abvtab)
                datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
                    ReplaceFormat:=False
            Next i
End Sub

คำตอบ:


3

Excel Multi Replace

  1. เปิดโปรแกรมแก้ไข VBA ( Alt+ F11) และวางมาโครด้านล่างที่ใดก็ได้
  2. ตั้งค่าช่วงการค้นหาสองคอลัมน์: คอลัมน์ที่ 1 คือค่าที่จะค้นหาและอันดับที่ 2 ที่จะแทนที่
  3. เลือกช่วงข้อมูลเข้าของคุณที่ควรเปลี่ยนค่าตามที่แสดงในภาพที่ 1
  4. ดำเนินการแมโคร ( Alt+ F8)

แมโครจะถามว่าช่วงการค้นหาของคุณอยู่ที่ไหน ก่อนชื่อแผ่นงานแล้วที่อยู่ช่วงการค้นหา ป้อนเฉพาะคอลัมน์แรกเช่นA1:A2ตัวอย่างด้านล่าง

แค่นั้นแหละ. ตอนนี้มาโครจะเริ่มทำซ้ำตามกฎการแทนที่ทั้งหมดและนำไปใช้เช่นการ
ค้นหาและแทนที่ Excel ปกติ ( Ctrl+ H) ไปยังช่วงอินพุตที่คุณเลือก

Input range            Replace rules               Input range after macro

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

Sub MultiReplace()
On Error GoTo errorcatch
Dim arrRules() As Variant

    strSheet = InputBox("Enter sheet name where your replace rules are", _
        "Sheet name", "Sheet1")
    strRules = InputBox("Enter address of replaces rules." & vbNewLine & _
        "But only the first column!", "Address", "A1:A100")

    Set rngCol1 = Sheets(strSheet).Range(strRules)
    Set rngCol2 = rngCol1.Offset(0, 1)
    arrRules = Application.Union(rngCol1, rngCol2)

    For i = 1 To UBound(arrRules)
        Selection.Replace What:=arrRules(i, 1), Replacement:=arrRules(i, 2), _
            LookAt:=xlWhole, MatchCase:=True
    Next i

errorcatch:
End Sub

ข้อผิดพลาดรันไทม์ '9': ตัวห้อยอยู่นอกช่วง :(
WouterB

ที่จริงแล้วมันจะแทนที่ A1 สำหรับฉันเท่านั้น นอกจากนี้หากคุณเปลี่ยนช่วงการค้นหาเป็น: A1:A3จะเป็นการส่งกลับข้อผิดพลาดรันไทม์
WouterB

การค้นหาและแทนที่ควรแทนที่ค่าที่พบทั้งหมดในแต่ละเซลล์ในช่วงที่ฉันมีให้ ตอนนี้ใช้งานได้กับการโทร A1 สำหรับฉันเท่านั้น ... ไม่เป็นไร. ขอบคุณ!
WouterB

ดูการแก้ไขของฉัน ในสถานการณ์การทดสอบของฉันฉันเลือกA1:A4ในแผ่นงานแรกและดำเนินการแมโคร (ชื่อแผ่นค้นหาเป็นLookupช่วงการค้นหาเดิมA1:A3) สำหรับฉันมันทำงานได้อย่างสมบูรณ์ มันเข้ามาแทนที่ทุกอย่าง
nixda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.