Eu tenho um dado de dizer mais de 5000 linhas e 10 colunas. Gostaria de adicionar um texto às linhas com base nas condições das colunas.
A B C D
fname lname state clustername
1. ram giri NCE ...
2. philips sohia MAD ...
3. harish Gabari NCE ....
Com base no estado da coluna, para NCE, o nome do cluster "nce.net" deve ser atribuído à coluna D (clustername) e também a MAD é "muc.net" a ser atribuído à linha 2.
você poderia por favor me ajudar.
Aqui está o meu código:
dim emptyrow as string
row_number = 1
lastRow = Cells(Rows.Count, "D").End(xlUp).Row
state = sheets("sheet1").rows("C" & row_number)
for each cell in selection
if instr(state, "NCE") = true then
Range(Cells(emptyrow, "D").Value = Array("nce.net")
end if
next emptyrow
Você poderia por favor me ajudar.
Respostas:
1 para resposta № 1Por que não uma fórmula simples?
Dentro D1
e copie
=IF(C1="NCE","nce.net",IF(C1="MAD","muc.net","No match"))
Fazendo o mesmo isso com código
Sub Simple()
Dim rng1 As Range
Set rng1 = Range([c1], Cells(Rows.Count, "C").End(xlUp))
With rng1.Offset(0, 1)
.FormulaR1C1 = "=IF(RC[-1]=""NCE"",""nce.net"",IF(RC[-1]=""MAD"",""muc.net"",""No match""))"
.Value = .Value
End With
End Sub
1 para resposta № 2
Você pode criar uma tabela de referência que consiste em um único estado e clustername em uma planilha separada e, em seguida, puxar o clustername para sua planilha original usando um =VLOOKUP()
função ... desde que exista uma relação 1: 1 entre estado e cluster ... até 1 cluster para múltiplos estados funcionaria. Dessa forma, você evita a codificação e pode reagir rapidamente se os nomes dos clusters mudarem.
Exemplo:
na Planilha2 lista todos os países e seus nomes de clones associados na Folha1 digite = VLOOKUP (...) na primeira linha da coluna clustername conforme a figura abaixo e copie para todas as linhas
Claro que você pode querer ter apenas valores, nãofórmulas em sua coluna de cluster; em seguida, você pode converter fórmulas em valores copiando e colando como valores a coluna do cluster depois de ter digitado =VLOOKUP(...)
Fórmula.
Alternativamente, se, e. você tem um monte de clusternames já definidos e só quer trabalhar em linhas onde o clustername está em branco, você pode
- filtrar por clusternames em branco e inserir o
=VLOOKUP(...)
Só lá use um pequeno pedaço de código
Sub DoCluster() Dim R As Range, S As Integer, C As Integer, Idx As Integer Set R = ActiveSheet.[A2] " top left cell of table S = 3 " column index of State column C = 4 " column index of Clustername column Idx = 1 " start at 1st row within range " run a loop across all rows, stop if 1st column gets blank Do While R(Idx, 1) <> "" " work only on rows wher cluster not yet set If R(Idx, C) = "" Then " now this isn"t really good ... try to avoid hardcoding BY ANY MEANS Select Case R(Idx, 3) Case "NCE" R(Idx, 4) = "nce.net" Case "MAD" R(Idx, 4) = "muc.net" " insert other cases here as per need " ... " trap undefined cases Case Else R(Idx, 4) = "undefined" End Select End If Idx = Idx + 1 Loop End Sub
Pessoalmente eu não gosto desse tipo de codificaçãoDe forma alguma, eu prefiro pegar os clusternames de uma tabela ... então, para mim, não seria necessário escrever código, a menos que toda a tarefa seja muito mais complexa do que a descrita.