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.