Formatowanie warunkowe: 3-kolorowa skala pokazująca trafność tekstu w programie Excel dla komputerów Mac

1

Czy istnieje sposób użycia formatowania warunkowego w następujący sposób w programie Excel? (Dla tych, którzy są ciekawi, używam Excel 2010 dla komputerów Mac)

Chcę, aby komórka B2 była zielona, ​​gdy A2 mówi „John lubi zielone jabłka”, a B2 także „John lubi zielone jabłka”, żółty, jeśli A2 mówi „John lubi zielone jabłka”, a B2 - „Bill lubi niebieskie jabłka”, a czerwony, jeśli A2 mówi „John lubi zielone jabłka”, a B2 mówi „Bill nienawidzi czerwonych pomarańczy”.

Zastanawiam się tylko, czy istnieje jakiś sposób na osiągnięcie tego efektu.

Dzięki

enano2054
źródło
Żeby było jasne, metryką jest liczba / procent słów, B2które można znaleźć w A2?
Excellll
Wszystko jak procent działa. To nie musi być dokładne, potrzebuję tylko czegoś względnego.
enano2054
Czy VBa będzie akceptowalne, czy chcesz to zrobić tylko z formatowaniem warunkowym
Dave
Zgodnie z prośbą @slhck usunąłem odpowiedź, która przedstawiła sposób osiągnięcia tego na komputerze PC, i zamieściłem tutaj pytanie i odpowiedź, aby w szczególności zająć się sprawą na PC: superuser.com/questions/753869/…
Andi Mohr
VBA jest akceptowalny. Nie wiedziałem, że to była opcja, to wynik, na którym mi zależy. Dzięki @DaveRook
enano2054

Odpowiedzi:

2

Pewnie. Wybierz komórkę B2 i przejdź do karty Strona główna > grupa Style > Formatowanie warunkowe > Nowa reguła > Użyj formuły, aby określić, które komórki sformatować

Wprowadź tę formułę:

=AND(A2="John likes green apples",B2="John likes green apples")

Ustaw format, aby wypełnił się na zielono.

Powtórz dla każdego dodatkowego koloru i reguły.

Calvin
źródło
Więc mam tę sprawę, że mam kilka tysięcy wierszy, każdy z innym tekstem w A i B, miałem nadzieję, że formatowanie warunkowe pomoże mi zidentyfikować, które zestawy są bardziej podobne, i nie chcę iść jeden po drugim . Jakieś sugestie? Doceniam odpowiedź.
enano2054
2
Wygląda na to, że możesz chcieć Fuzzy Lookup .
Calvin
Zauważ, że mówię, że używam programu Excel 2010 dla komputerów Mac, miałem taką nadzieję, że to zadziała, ale wygląda na to, że potrzebuję komputera.
enano2054
1
Och, nie zdawałem sobie sprawy, że to tylko Windows. Powinieneś być w stanie użyć rozmytego porównania zaimplementowanego w VBA. Nie próbowałem tego, ale ten wygląda obiecująco.
Calvin
0

To zdecydowanie wymagałoby VBA. Poniższa funkcja zwróci wartość z 0-1 (tj. Procent) wartości pasujących do tej samej pozycji . Użyj tego samego, jak w przypadku wbudowanej funkcji. Następnie możesz zastosować normalne formatowanie warunkowe do tej wartości.

Ma opcjonalną wartość Prawda / Fałsz (domyślnie fałsz) określającą, czy wielkość liter ma być uwzględniana.

„Bob zjadł kolację” vs „Bob zjadł kolację”. wyniósłby 0,66, ponieważ nie ignoruje interpunkcji.

„Bob Bob Bob Bob” vs „Bob Bob” = 2/4 = 0,5 - gdy łańcuchy zawierają inną liczbę słów, większy z nich jest mianownikiem, ale twój licznik osiąga maksimum na mniejszym z nich.

Function ScorePair(stringInput As String, stringTarget As String, Optional caseSensitive As Boolean = False) As Double

Dim scoreNum As Integer
Dim scoreDen As Integer
Dim splitInput As Variant
Dim splitTarget As Variant
Dim theScore As Double
Dim sizeTarget As Integer
Dim sizeInput As Integer
Dim loopSize As Integer

'Initialize
scoreNum = 0
i = 0

'Extract strings into arrays of words
splitInput = Split(stringInput, " ")
splitTarget = Split(stringTarget, " ")

'Get sizes of arrays to know how much to loop (smaller of two) and what to set denominator at (bigger of two)
sizeInput = UBound(splitInput, 1)
sizeTarget = UBound(splitTarget, 1)
scoreDen = WorksheetFunction.Max(sizeTarget, sizeInput) + 1
loopSize = WorksheetFunction.Min(sizeTarget, sizeInput)

'Loop through arrays comparing them by matching position
For i = i To loopSize
    If caseSensitive Then
        If splitInput(i) = splitTarget(i) Then
            scoreNum = scoreNum + 1
        End If
    ElseIf LCase(splitInput(i)) = LCase(splitTarget(i)) Then
        scoreNum = scoreNum + 1
    End If
Next

'Calculate the score as percentage
theScore = scoreNum / scoreDen
ScorePair = theScore

End Function
Madball73
źródło
Wybacz nowicjuszowi pytanie, ale co zrobię po podłączeniu go do Edytora Visual Basic? Dzięki
enano2054
Umieszczasz kod w module. W typie komórki „= para wyników (a1, a2)”
wbeard52
Ten jest w porządku, ale nie dbam tak bardzo o miejsce tego słowa.
enano2054
Czy chciałbyś, aby działał tak samo jak on, chyba że musi być na tej samej pozycji? Więc „Bob zjadł krowę” = „Krowa zjadł boba”?
Madball73
0

Twoje pytanie również nie jest całkowicie jasne. Czy rzeczywiste imię ma znaczenie (John, Bill)? Czy owoce będą miały znaczenie? Lub jest o 3 warunkach

  1. Dopasowywanie nazw i uczucia do dopasowania do owoców
  2. Nazwy nie pasują, ale uczucia do owocowego dopasowania
  3. Imiona nie pasują, a uczucia do owoców nie pasują

Założyłem, że jedyne, co się liczy, to imię i nazwisko osoby, i jeśli mają takie samo uczucie do czegoś. Dlatego nazwisko osoby może być dowolne i jeśli zarówno Bill, jak i Claire nienawidzą owoców, założyłem, że jest to również pomarańcza. Masz już kod, więc jego modyfikacja powinna być łatwa!

Sub Button1_Click()

Dim row As Integer
row = 1
Do While (True)

If Range("A" & row).Value = "" Then
    Exit Do
End If

Dim score As Integer
score = 0

Dim wordsA() As String
wordsA = Split(Range("A" & row).Value, " ")

Dim wordsB() As String
wordsB = Split(Range("B" & row).Value, " ")

If wordsA(0) = wordsB(0) Then
    score = score + 1
End If

If wordsA(1) = wordsB(1) Then
    score = score + 1
Else
    score = score + 3
End If


'2 = both same name, both feel same way
'1 = different name, both feel same way
'3 = differet feelings

Select Case score
   Case 1
   Case 4
Range("B" & row).Interior.ColorIndex = 46

   Case 2
   Range("B" & row).Interior.ColorIndex = 43

   Case 3
Range("B" & row).Interior.ColorIndex = 30


End Select

row = row + 1

Loop

End Sub

wprowadź opis zdjęcia tutaj

Dave
źródło
Och, więc po prostu założyłem, że formatowanie warunkowe będzie dla mnie odpowiednie, więc każde rozwiązanie działa. Ok, wybacz mi, że jestem nowicjuszem. Podłączyłem kod do edytora Visual Basic, ale nie wiem, dokąd się udać, aby go uruchomić. Wszelkie wskazówki byłyby świetne. Dzięki!
enano2054
Aby to przetestować, najpierw utwórz KOPIUJ plik programu Excel !!! Następnie na kopii kliknij przycisk Odtwórz (zielona strzałka), aby najpierw sprawdzić, czy robi to, co chcesz (czy nie) @ user1470242
Dave
Gdzie pojawia się przycisk odtwarzania w programie Excel dla komputerów Mac? Nie widzę tego. # novicequestion2
enano2054
Idę do Narzędzia> Makro> Makra, a następnie uderzam Uruchom, ale nic się nie dzieje.
enano2054
hmmm ... czy masz włączone makra? W ogóle nie znam Maca, wiem tylko, że Excel-Mac może uruchamiać makra, stąd post. Jeśli chodzi o to, jak go wykonać, myślę, że najlepiej byłoby zrobić wyszukiwanie w Google, nie sądzę, żebym mógł w tym wiele pomóc ... Przepraszam @ user1470242
Dave