comparar caracteres

16/01/2006 - 20:01 por Germin | Informe spam
Hola, necesito una macro que lea una matriz, que encuentre el máximo global y
que, por ejemplo, tenga la siguiente matriz:

TAREA A B E F G H I HI BF
A .
B .
E .
F .
G .
H .
I .
HI .
BF...100

Como el máximo global es el 100, se forma otra columna y otra fila llamada
BFHI, dado esto debe eliminar los valores de las filas y columnas que
contengan cada una de las letras y las combinaciones. Entonces debe eliminar,
tanto en filas como columnas las letras: B, F, H, I, BF y HI.

TAREA A B E F G H I HI BF HIBF
A . . . . . .
B..
E . . . .
. .
F
G . . . . . .
H
I.

HI..
BF..
HIBF


COMO VEN LAS LINEAS PUNTEADAS MUESTRAN LAS COLUMNAS Y FILAS QUE SON BORRADAS.

No necesito todo el programa. Sólo quiero ver como ver si algún carácter o
conjunto de caracteres se encuentra más arriba para poder eliminarlo.

Preguntas similare

Leer las respuestas

#1 KL
16/01/2006 - 21:59 | Informe spam
Hola Germin,

Tu explicacion no es nada facil de entender, pero lo voy a intentar. Prueba el codigo que te pongo abajo.

Saludos,
KL

Sub test()
Dim rng As Range, Letra As String
Dim Titulo As String, Valor As Double
Dim col As Long, row As Long
Dim i As Long, j As Long

Set rng = [B2:J10]
With rng.Find(Application.Max(rng), rng(1), xlValues, xlWhole)
Titulo = Cells(.row, 1) & Cells(1, .Column)
Valor = .Value
End With

Application.ScreenUpdating = False

For j = 1 To Len(Titulo)
Letra = Mid(Titulo, j, 1)
For i = 1 To rng.Columns.Count
If InStr(rng(1, i).Offset(-1, 0), Letra) Then rng.Columns(i).ClearContents
Next i
For i = 1 To rng.Rows.Count
If InStr(rng(i, 1).Offset(0, -1), Letra) Then rng.Rows(i).ClearContents
Next i
Next j

col = rng.Column + rng.Columns.Count
fila = rng.row + rng.Rows.Count

Columns(col).Insert
Rows(fila).Insert

Cells(fila, col) = Valor
Cells(rng.row - 1, col) = Titulo
Cells(fila, rng.Column - 1) = Titulo

Application.ScreenUpdating = True
End Sub
Respuesta Responder a este mensaje
#2 Germin
17/01/2006 - 19:41 | Informe spam
Esta Super buena, te pasaste. Gracias. ¿Esta macro la puedo llamar desde otra
cierto?

"KL" escribió:

Hola Germin,

Tu explicacion no es nada facil de entender, pero lo voy a intentar. Prueba el codigo que te pongo abajo.

Saludos,
KL

Sub test()
Dim rng As Range, Letra As String
Dim Titulo As String, Valor As Double
Dim col As Long, row As Long
Dim i As Long, j As Long

Set rng = [B2:J10]
With rng.Find(Application.Max(rng), rng(1), xlValues, xlWhole)
Titulo = Cells(.row, 1) & Cells(1, .Column)
Valor = .Value
End With

Application.ScreenUpdating = False

For j = 1 To Len(Titulo)
Letra = Mid(Titulo, j, 1)
For i = 1 To rng.Columns.Count
If InStr(rng(1, i).Offset(-1, 0), Letra) Then rng.Columns(i).ClearContents
Next i
For i = 1 To rng.Rows.Count
If InStr(rng(i, 1).Offset(0, -1), Letra) Then rng.Rows(i).ClearContents
Next i
Next j

col = rng.Column + rng.Columns.Count
fila = rng.row + rng.Rows.Count

Columns(col).Insert
Rows(fila).Insert

Cells(fila, col) = Valor
Cells(rng.row - 1, col) = Titulo
Cells(fila, rng.Column - 1) = Titulo

Application.ScreenUpdating = True
End Sub


Respuesta Responder a este mensaje
#3 KL
17/01/2006 - 22:12 | Informe spam
Hola Germin,

¿Esta macro la puedo llamar desde otra cierto?

En principio si, pero si fallara habria que ver las circunstancias concretas.

Saludos,
KL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida