简单的条件公式或macros

这听起来很简单,但我找不到办法做到这一点。 我在VBA上相当有限。

Column A: Some Text Some Text Some Text Repeated Text Some Text Some Text Repeated Text SomeText 

第一个柱子有这样的文字。 我也有一个包含30个不同string的列表,如下所示:

 Dog Cat Lion Tiger Bear ... Elephant 

我想复制粘贴这些string到一个条件的B列。 无论何时在列A的同一行遇到重复的文本,复制的值将变为动物列表中的下一个string。 当它到达最后一个动物时,它应该回到第一个动物“狗”。 最后只是我想要这样的东西;

  Column A: Column B: R1 Some Text Dog R2 Some Text Dog R3 Some Text Dog R4 Repeated Text Cat R5 Some Text Cat R6 Some Text Cat R7 Repeated Text Lion R8 SomeText Lion ............. R124 Some Text Elephant R125 Some Text Elephant R126 Repeated Text Dog (List is over and it reverted back to the first animal in the list) R127 Some text Dog .... 

我不能用任何excel公式来做…

一个简单的索引与COUNTIF将做的伎俩。 在B1里放:

 =INDEX(D:D,MOD(COUNTIF($A$1:$A1,"Repeated Text"),COUNTA(D:D))+1) 

并抄下来。

我的动物列表在D列。

这将随着D中的列表变大或变短而调整,并在达到列表的末尾时重复。

![在这里输入图片描述

我更喜欢斯科特的答案,但这是我的解决scheme:列A中的小动物名单,一些文字在C中,结果在D.

 Sub Get_Animal() Dim rngAnimals As Range, rngWords As Range, rngThing As Range, strChangeValue As String, AnimalCounter As Long Set rngWords = ActiveSheet.Range("C1:C26") Set rngAnimals = ActiveSheet.Range("A1:A3") strChangeValue = "end" AnimalCounter = 1 ActiveSheet.Range("D1:D99").Clear For Each rngThing In rngWords If rngThing.Text = strChangeValue Then AnimalCounter = AnimalCounter + 1 If AnimalCounter > rngAnimals.Rows.Count Then AnimalCounter = 1 End If End If rngThing.Offset(0, 1) = rngAnimals.Cells(AnimalCounter, 1) Next rngThing End Sub