2014-11-12 2 views
0

Хорошо. Это то, что я имею в колонке A1: A100:Сравнение текста из одной колонки для определения вывода другого столбца

12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
12V Automotive Products        
A/V Cables           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Accessories           
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action            
Action & Adventure         
Action & Adventure         
Adapters            
Adapters            
Adapters            
Adapters            
Adapters & Splitters         
Adapters & Splitters         
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           
Adventure           

И это код:

Sub FillColumnB() 
Dim rng As Range, cl As Range 

    Set rng = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) 

    For Each cl In rng 

    If cl = "12V Automotive Products" Then 
    cl.Offset(0, 1) = "tdexjxr" 
      ElseIf cl = "Accessories" Then 
      cl.Offset(0, 1) = "s6ii" 
    ElseIf cl = "Action" Then 
    cl.Offset(0, 1) = "7ks57k5k" 
    ElseIf cl = "Action & Adventure" Then 
    cl.Offset(0, 1) = "kxee5xskex" 
    ElseIf cl = "Adapters" Then 
    cl.Offset(0, 1) = "kxykk5ezw" 
    ElseIf cl = "Adobe Titles" Then 
    cl.Offset(0, 1) = "kz46yk78" 
    ElseIf cl = "Adventure" Then 
    cl.Offset(0, 1) = "l8rrzlez" 
    ElseIf cl = "All Toys" Then 
    cl.Offset(0, 1) = "ezlllels6" 
    ElseIf cl = "Animation" Then 
    cl.Offset(0, 1) = "988l7889l" 
    ElseIf cl = "Anti-Virus/Anti-Spyware" Then 
    cl.Offset(0, 1) = "wq3w" 
    ElseIf cl = "Applications" Then 
    cl.Offset(0, 1) = "jrd5j" 
    ElseIf cl = "Arcade" Then 
    cl.Offset(0, 1) = "drj76j" 
    ElseIf cl = "Arts & Humanities" Then 
    cl.Offset(0, 1) = "8l" 

     End If 
    Next 
    End Sub 

Мой вопрос почему выше код не работает?

+1

И мой вопрос будет: что код *** должен делать ** *, и что он делает вместо этого (если что-нибудь)? Если вы получите сообщение об ошибке - пожалуйста, сообщите нам, что это за ошибка! (полное и точное сообщение об ошибке, пожалуйста!) –

+0

Предположим, что для чтения текста в ячейках столбца A и в соответствии с данными в ячейках выводится то, что я хочу в столбце B. Но это ничего не делает. Нет ошибок. Фактически, с меньшим количеством строк текста (около 10 строк) это действительно работает. – user3733492

+1

«Почему это не работает» бесполезно для людей, которые хотят помочь. В следующий раз сообщите соответствующую информацию о том, что «не работает» – cheezsteak

ответ

1

Первый блок Select Case имеет смысл, чем серия ElseIf заявлений. Что касается того, почему это «не работает» без ошибок, две возможные проблемы:

1) вы не получаете доступа к значениям объектов ячейки. Он должен быть неявным, но указание на него должно помочь.

2) вы не обрабатываете случай, когда значение ячейки не соответствует ни одному из перечисленных символов. Добавление окончательного случая Else должно обрабатывать эту возможность. Если это верно для всех ячеек в rng, то посмотрите на их содержимое больше. Возможно, что нужно удалить или удалить пробел влево или вправо.

For Each cl In rng.cells 

    Dim outCell as Range 
    Set outCell = cl.offset(0,1) 

    Select Case cl.value 
     Case "12V Automotive Products" 
      outCell.value = "s6ii" 
     Case "Action" 
      outCell.value = "7ks57k5k" 
     'Case ... 
     ' outCell.value = ... 
     Case Else 
      outCell.value = "Not Recognized Value" 
    End Select 

Next cl 
+0

Это тоже не работает. в столбце смещения каждая ячейка считывает «Не распознанное значение» – user3733492

+1

> «Если [случай else] используется для всех ячеек в rng, тогда просмотрите их содержимое больше. Возможно, есть пробел в начале или конце, который нужно удалить. " – cheezsteak

+3

Добавьте это прямо перед выбором Case - 'Debug.Print cl.Address(), cl.Value' - вы получаете ожидаемый результат (на панели Immediate VB Editor)? Если - как предлагает @ptwales - у вас могут быть пробелы в значениях, тогда попробуйте 'Select Case Trim (cl.Value)' –

0

Вы должны убедиться, что ваш диапазон захватывает все, потому что, как вы говорите, что ваш код работает для небольших объемов данных (10 строк). Используйте следующее, чтобы отобразить окно сообщения, которое информирует вас об общих строках в вашем выборе диапазона. Убедитесь, что он проверяет правильное количество строк:

Dim rng As Range, cl As Range 
Dim rngCheck As Integer 

    Set rng = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) 
    rngCheck = Range("A" & Rows.Count).End(xlUp).Row 
    MsgBox rngCheck 

Копировать из предыдущего листа на новый лист:

Sheets("Name of Sheet").Range(Range of Cells).Copy 
Sheets("Destination Sheet").Range(Where you want it).PasteSpecial Paste:=xlPasteValues 
+0

Это тоже не работает. в столбце смещения каждая ячейка считывает «Не распознанное значение» – user3733492

+0

Что возвращает MsgBox? – Chrismas007

+0

Он возвратил количество строк с текстом. Так что эта часть прошла нормально, но ... – user3733492

Смежные вопросы