= ISNUMBER(SEARCH())公式无法正常工作

基本上,我试图搜索b列中的值是否包含在a列中的单元格中

= ISNUMBER(SEARCH())公式无法正常工作

我当前正在使用公式

=IsnUMber(SEARCH(B1,$A:$A)) 

并在条件格式中使用它突出显示A列中包含来自B列的字符串的单元格。但是,它没有突出显示正确的单元格

有什么建议吗?

seasun19880923 回答:= ISNUMBER(SEARCH())公式无法正常工作

问题是您的ksql> create stream main_stream ( article struct< _id VARCHAR,title VARCHAR,text VARCHAR,action VARCHAR,url VARCHAR,feed_id VARCHAR,mode VARCHAR,score INTEGER,published_at VARCHAR,retrieved_at VARCHAR> ) with (KAFKA_TOPIC='articles',value_format='JSON'); ksql> create stream processed as select test(article) article from main_stream; ksql> describe processed; Name : processed Field | Type ------------------------------------------------------------------------------------------------------------------------------------------------------------- ROWTIME | BIGINT (system) ROWKEY | VARCHAR(STRING) (system) ARTICLE | STRUCT<_ID VARCHAR(STRING),RAW_TITLE VARCHAR(STRING),RAW_TEXT VARCHAR(STRING),PROCESSED_TITLE VARCHAR(STRING),PROCESSED_TEXT VARCHAR(STRING)> ------------------------------------------------------------------------------------------------------------------------------------------------------------- For runtime statistics and query details run: DESCRIBE EXTENDED <Stream,Table>; ksql> show queries; Query ID | Kafka Topic | Query String -------------------------------------------------------------------------------------------------------------------------------------------------------------- CSAS_processed_20 | processed | CREATE STREAM processed WITH (REPLICAS = 1,PARTITIONS = 1,KAFKA_TOPIC = 'processed') AS SELECT TEST(MAIN_STREAM.ARTICLE) "ARTICLE" FROM MAIN_STREAM MAIN_STREAM; -------------------------------------------------------------------------------------------------------------------------------------------------------------- ksql> describe function test; Name : TEST Overview : test udf Type : scalar Jar : /Users/ktawfik/libs/custom-udf.jar Variations : Variation : TEST(article STRUCT<_ID VARCHAR,TITLE VARCHAR,TEXT VARCHAR,ACTION VARCHAR,URL VARCHAR,FEED_ID VARCHAR,MODE VARCHAR,SCORE INT,PUBLISHED_AT VARCHAR,RETRIEVED_AT VARCHAR>) Returns : STRUCT<_ID VARCHAR,RAW_TITLE VARCHAR,RAW_TEXT VARCHAR,PROCESSED_TITLE VARCHAR,PROCESSED_TEXT VARCHAR> Description : test article : A complete article object 公式正在返回值@Udf(description = "test",schema = "struct< _id VARCHAR,raw_title VARCHAR,raw_text VARCHAR,processed_title VARCHAR,processed_text VARCHAR>") public Struct processDocument( @UdfParameter( schema = "struct< _id VARCHAR,retrieved_at VARCHAR>",value = "article",description = "A complete article object") Struct struct) { Schema ARTICLE_SCHEMA = SchemaBuilder.struct() .field("_id",Schema.STRING_SCHEMA) .field("raw_title",Schema.STRING_SCHEMA) .field("raw_text",Schema.STRING_SCHEMA) .field("processed_title",Schema.STRING_SCHEMA) .field("processed_text",Schema.STRING_SCHEMA) .build(); Struct proStruct = new Struct(ARTICLE_SCHEMA); proStruct.put("_id","1234"); proStruct.put("raw_title","RAW_TITLE___1234"); proStruct.put("raw_text","RAW_TEXT___1234"); proStruct.put("processed_title","TITLE____1234"); proStruct.put("processed_text","TEXT____1234"); System.out.println(proStruct); // Struct{_id=1234,raw_title=RAW_TITLE___1234,raw_text=RAW_TEXT___1234,processed_title=TITLE____1234,processed_text=TEXT____1234} return proStruct; } 的数组,其中ISNUMBER(SEARCH(….中的每一项都返回一个值。您需要知道这些项目中的任何是否匹配。

因此,对于您的公式,请考虑对数组公式进行修改

{FALSE;TRUE;FALSE;FALSE;...}

由于这是一个数组公式,因此您需要在按下 enter 的同时按住 ctrl + shift 来“确认”它。如果操作正确,Excel将按照公式栏中的说明在公式周围放置括号within_text

如果您不喜欢使用=OR(ISNUMBER(SEARCH(B1,$A:$A))) 输入方法,则可以使用以下公式,该公式将在没有匹配项的情况下返回零,在任何匹配项的情况下都不为零:

{...}
,

Excel的SEARCH函数用于查找一个字符串在另一个字符串中的位置。通常,您可以这样使用它:

=SEARCH("String A","A Longer String Containing String A")

这将返回在第二个字符串中第一个字符串开始的字符索引,在本例中为28

您真正需要的是VLOOKUP。由于您要进行文本搜索(子字符串),因此您需要将范围设置为文本类型而不是数字。

您应该执行以下操作:

  • 在A列的右侧添加一个额外的列,并使用TEXT函数将条目转换为文本形式:

    =TEXT(A1,"@")
    
  • 现在,您可以使用VLOOKUP在此文本范围内执行子字符串匹配。当您不要求VLOOKUP执行通配符时,它支持通配符(第4个参数应为FALSE)。然后是您的公式:

    =VLOOKUP("*" & C1 & "*",$B:$B,1,FALSE)
    

请注意,我已经将B列(文本列)作为查找范围,而C1是包含要搜索的文本的单元格。

此方法还具有其他优点,它可以返回范围内的实际匹配条目,因此您不必手动查找。

获得结果后,可以对其应用条件格式。

,

以第一个单元格(在这种情况下为A1)为活动单元格突出显示A列(或A列起始单元格A1中的相关范围),请使用以下公式作为条件格式规则:

=(SEARCH($B1,$A1)*(LEN($B1)>0))>0
  

逻辑是首先从主字符串中搜索给定的子字符串,然后将结果乘以LEN($B1)>0以排除为列B中的空白单元格返回的1的结果。

Demo

注意:条件格式array的方式运行,因此即使公式仅查看范围第一行中的值,只要您使用相对(或在某些情况下使用绝对值)正确设置单元格引用并正确突出显示结果范围,然后再设置规则,此规则将以与数组第一行相同的方式应用,如本示例所示。

本文链接:https://www.f2er.com/3130375.html

大家都在问