Java'nın String.contains bileşeninin Excel eşdeğeri (String otherString)


1

Oldukça arkaik bir String'e sahip bir hücrem var. (Bir Magic mana maliyeti var: The Gathering büyü.) Örnekleri 3g, 2gg, 3ur, ve bg. 5 olası harf vardır ( g w u b r). 5 sütunum var ve altta her birinin kaç tane içerdiğini saymak istiyorum. Yani elektronik tablom böyle görünebilir

  A                   B        C  D  E  F  G
 +--------------------------------------------
1|Name                Cost     G  W  U  B  R
2|Centaur Healer      1gw      1  1  0  0  0
3|Sunspire Griffin    1ww      0  1  0  0  0 // just 1, even though 1ww
4|Rakdos Shred-Freak  {br}{br} 0  0  0  1  1

Temel olarak, benzeyen bir şey istiyorum =if(contains($A2,C$1),1,0)ve bunu 5 sütunun tümüne ve 270 bazı kartların altına sürükleyebilirim. (Bu gerçek veriler, bu arada. Bu alay değil :-).)

Java'da bunu yapardım:

String[] colors = { "B", "G", "R", "W", "U" };
for(String color : colors) {
    System.out.print(cost.toUpperCase().contains(color) ? 1 : 0);
    System.out.print("\t");
}

Excel 2010'u kullanırken böyle bir şey var mı.

Kullanmayı denedim find()ve search()eğer renkler varsa harika çalışıyorlar. Ama eğer renk yoksa, geri döner #value- bu yüzden örneğin Centaur Healer (satır 2) 1 1 #value #value #valueyerine alıyorum 1 1 0 0 0. Kullanılan formül öyleydi if(find($A2,C$1) > 0, 1, 0).

Yanıtlar:


2

Çizgileri boyunca bir şey =IF(ISERROR(FIND("text", A1)), "false", "true")çalışması gerekir.

Joker karakterler kullanmanız gerekirse, searchbunun yerine deneyebilirsiniz find.


Kullandığımda searchbunun yerine kullandım find. Aradaki farkın ne olduğundan hala emin değilim, ama bu benim amaçlarım için işe yarıyor.
— corsiKa 21:12

Görebildiğim kadarıyla ve yukarıda bahsettiğim gibi, joker karakter desteği, ikisi arasındaki temel (sadece?) Fark gibi görünüyor. BTW, kullanışlı olabilecek başka bir değişken:=IFERROR(FIND("text", A1), "error")
— Karan

Joker karakter desteğine ek olarak, SEARCHbüyük küçük harf duyarlı değildir FIND.
— Chris neilsen,

1

Yanılıyor olabilirim ama find () 'u aradığına inanıyorum .

FIND( substring, string, [start_position] )

1
Denedim, findancak yoksa, karşılaştıracak bir değerim yok. 0 1 0 0 0Ben yerine#VALUE 1 #VALUE #VALUE #VALUE
— corsiKa 21:12

1
@corsiKa: Bir şeyleri kullanarak çekebileceğinizden stackoverflow.com/questions/9513795/… adresini ziyaret edin IFERROR. Bazen # DEĞER, sütunun görüntülenecek kadar geniş olmadığı anlamına da gelebilir ...
— Tamara Wijsman 21:12

Tom bu mükemmel. Yaptım =IFERROR(IF(SEARCH(K$1,$E2)>0,1,0),0)ve mükemmel çalıştı. ( örneğimin K$1,$E2eşdeğeri var $A2,C$1.
— corsiKa 21:12

1

Bu yapacağız:

=N(NOT(ISERR(SEARCH(C$1,$B2))))


1
btw 'nin arayışıyla elde edilen avantaj, dava ile uğraşmak zorunda olmamanızdır ... Ve daha sonra 1 ile 0 arasında bir şeyi değiştirmek istiyorsanız, bu daha iyidir: = IF (ISERR (SEARCH (C $ 1, $ B2)), 0,1)
— Alberto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.