Tìm và thay thế hàng loạt Google Trang tính

Đây không phải là nhà xe của tôi và tôi nhận ra rằng mình đang hơi choáng. Mọi sự trợ giúp sẽ rất được trân trọng

Điều tôi đang cố gắng hoàn thành
https. // tài liệu. Google. com/spreadsheets/d/1p12KwPUr5UChGqxmoJz3UbuTOEyt2ai7PlPQxSOAodk/edit#gid=0

Tìm và thay thế hàng loạt Google Trang tính

Các ô trong Cột B được tạo thành từ nhiều cụm từ được phân tách bằng dấu phẩy. Một số cụm từ đó được liệt kê trong Cột C. Cột B cần được tìm kiếm bằng cách sử dụng các cụm từ trong Cột C. Nếu tìm thấy các cụm từ, chúng phải được thay thế bằng các giá trị tương ứng từ Cột D (C1 đến D1, C2 đến D2, v.v. ) và được liệt kê trong Cột E, mỗi giá trị được phân tách bằng ", ". Ví dụ

  • Tìm kiếm B1 cho tất cả các cụm từ được liệt kê trong C. C
  • Giả sử các cụm từ C1, C3, C6 được tìm thấy trong B1 thì các giá trị từ D1, D3, D6 được liệt kê trong E1, mỗi giá trị được phân tách bằng dấu phẩy (giá trị tìm thấy1, giá trị tìm thấy2, giá trị tìm thấy3)
  • Quá trình này lặp lại B2. B dân số E2. E với các giá trị từ D2. D

Câu trả lời hay nhất

Bạn có thể thử sử dụng một bảng riêng (Sheet2) để thay thế. Cột A giống như ở đây (Sheet1), cột Sheet2. B. Z (hoặc số lượng tối đa cần thiết) được sử dụng để TÁCH các thuật ngữ trong Trang tính 1. B vào họ. Đối với mỗi cột Sheet2. B. Z, tạo trong một cột tương ứng Sheet2. AB. AZ một CÔNG THỨC Mảng của các VLOOKUP trao đổi từ thông qua tra cứu trong Trang tính 1. C. C đến Sheet1. D. D

=ARRAYFORMULA(IFNA(VLOOKUP(C3:AD, Sheet1!C2:D, 2, false),C3:AD))

Cuối cùng CONCATENATE Sheet2. AB. AZ vào Sheet1. E

Giải pháp liên quan

Google-sheets – Cách đọc nhiều giá trị trong ô ở mỗi hàng (được phân tách bằng dấu phẩy) trong Bảng tính Google

Tôi đã cho rằng hai hàng cuối cùng không đầy đủ chứ không phải là hướng dẫn cho yêu cầu của bạn, vì vậy sẽ đề xuất

=if(iserror(find(C$1,$B2)),"",1)  

trong cột có nhãn aaa và hàng có nhãn abc, sao chép ngang và xuống cho phù hợp

Google-sheet – Tra cứu nâng cao + tính tổng

Tôi đã đưa ra giải pháp này

công thức

(1) =TRANSPOSE(ARRAY_ROW(JAN!A1,FEB!A1,MAR!A1))
(2) =ARRAYFORMULA(VLOOKUP(A1:A3,VLOOKUP!A1:B3,2,0))
(3) =QUERY(A1:B3, "SELECT A, SUM(B) GROUP BY A LABEL SUM(B) 'Totals'")

Ảnh chụp màn hình

(1)

Tìm và thay thế hàng loạt Google Trang tính

(2)

Tìm và thay thế hàng loạt Google Trang tính

(3)

Tìm và thay thế hàng loạt Google Trang tính

Giải thích

Công thức ARRAY_ROW cho phép dễ dàng chuẩn bị một phạm vi. Công thức TRANSPOSE sắp xếp lại hàng thành vị trí cột. Bằng cách này, tất cả các mục được trình bày độc đáo (1). VLOOKUP

=if(iserror(find(C$1,$B2)),"",1)  
0 sẽ tìm kiếm hiệu quả tất cả các số tương ứng trong bảng VLOOKUP (2). Công thức
=if(iserror(find(C$1,$B2)),"",1)  
1 được sử dụng để thực hiện phép tính tổng (3)

Có lẽ điều tốt nhất cho bạn, trong trường hợp này, là tạo một chức năng mới cho Bảng tính Google của bạn. Trong trường hợp chung, nó có xu hướng đơn giản, rõ ràng và mạnh mẽ hơn loại công thức phức tạp nên làm như vậy

Trong trường hợp cụ thể này, tôi cũng gặp vấn đề tương tự, vì vậy bạn có thể sử dụng chức năng tương tự

Nhấp vào menu "Công cụ", sau đó nhấp vào tùy chọn "Trình chỉnh sửa tập lệnh". Vào trình chỉnh sửa tập lệnh, xóa bản nháp và dán chức năng này

function preg_quote( str ) {
  // http://kevin.vanzonneveld.net
  // +   original by: booeyOH
  // +   improved by: Ates Goral (http://magnetiq.com)
  // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   bugfixed by: Onno Marsman
  // *     example 1: preg_quote("$40");
  // *     returns 1: '\$40'
  // *     example 2: preg_quote("*RRRING* Hello?");
  // *     returns 2: '\*RRRING\* Hello\?'
  // *     example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
  // *     returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'

  return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
}

function ARRAYREPLACE(input,fromList,toList,caseSensitive){
  /* default behavior it is not case sensitive */
  if( caseSensitive === undefined ){
    caseSensitive = false;
  }
  /* if the from list it is not a list, become a list */
  if( typeof fromList != "object" ) {
    fromList = [ fromList ];
  }
  /* if the to list it is not a list, become a list */
  if( typeof toList != "object" ) {
    toList = [ toList ];
  }
  /* force the input be a string */
  var result = input.toString();

  /* iterates using the max size */
  var bigger  = Math.max( fromList.length, toList.length) ;

  /* defines the words separators */
  var arrWordSeparator = [ ".", ",", ";", " " ];

  /* interate into the lists */
  for(var i = 0; i < bigger; i++ ) {
    /* get the word that should be replaced */
    var fromValue = fromList[ ( i % ( fromList.length ) ) ]
    /* get the new word that should replace */
    var toValue = toList[ ( i % ( toList.length ) ) ]

    /* do not replace undefined */
    if ( fromValue === undefined ) {
      continue;
    }
    if ( toValue == undefined ) {
      toValue = "";
    }

    /* apply case sensitive rule */
    var caseRule = "g";
    if( !caseSensitive ) {
      /* make the regex case insensitive */
      caseRule = "gi";
    }

    /* for each end word char, make the replacement and update the result */
    for ( var j = 0; j < arrWordSeparator.length; j++ ) {
      
      /* from value being the first word of the string */
      result =  result.replace( new RegExp( "^(" + preg_quote( fromValue + arrWordSeparator[ j ] ) + ")" , caseRule ), toValue + arrWordSeparator[ j ] );
      
      /* from value being the last word of the string */
      result =  result.replace( new RegExp( "(" + preg_quote( arrWordSeparator[ j ] + fromValue ) + ")$" , caseRule ), arrWordSeparator[ j ] + toValue );
      
      /* from value in the middle of the string between two word separators */
      for ( var k = 0; k < arrWordSeparator.length; k++ ) {
        result =  result.replace( 
          new RegExp( 
            "(" + preg_quote( arrWordSeparator[ j ] + fromValue + arrWordSeparator[ k ] ) + ")" , 
            caseRule 
          ), 
          /* need to keep the same word separators */
          arrWordSeparator[ j ] + toValue + arrWordSeparator[ k ] 
        );
      }
    }
    
    /* from value it is the only thing in the string */
    result =  result.replace( new RegExp( "^(" + preg_quote( fromValue ) + ")$" , caseRule ), toValue );
  }
  /* return the new result */
  return result;
}

Chỉ cần lưu tập lệnh của bạn và chức năng mới sẽ có sẵn cho bạn. Bây giờ, bạn có hàm thay thế tất cả danh sách giá trị đầu tiên bằng danh sách giá trị thứ hai

=ARRAYREPLACE(C2;A1:A4;B1:B4)

ví dụ: lấy văn bản

=if(iserror(find(C$1,$B2)),"",1)  
2 và thay thế tất cả các phần tử được tìm thấy trong danh sách
=if(iserror(find(C$1,$B2)),"",1)  
3 bằng phần tử tương đương trong danh sách
=if(iserror(find(C$1,$B2)),"",1)  
4

Có tìm và thay thế trong Google Trang tính không?

Công cụ tìm và thay thế Google Sheets tiêu chuẩn . Nhập nội dung cần tìm. Nhập giá trị thay thế. Chọn giữa tất cả các trang tính/trang tính hiện tại/phạm vi cụ thể để xử lý

Bạn có thể tìm kiếm nhiều thứ trong Google Trang tính không?

Chúng ta có thể sử dụng nhiều chuỗi tìm kiếm trong một hàm/công thức TÌM KIẾM duy nhất trong Google Trang tính . Không cần lồng chức năng TÌM KIẾM để thực hiện nhiều tìm kiếm. Tìm kiếm lồng nhau là về việc sử dụng hàm TÌM KIẾM theo cách lồng nhau trong Google Trang tính để kết hợp nhiều chuỗi tìm kiếm.