martes, 23 de agosto de 2016

Case en macro Excel

Select Case Altura
    
    Case Is < 140
        tipo = "bajito"
    
    Case Is < 170
        tipo = "mediano"
        
    Case Else
        tipo = "alto"
        
End Select

Búsqueda de datos

Buscar un valor 
 
zona=Range("A:A") 
Set c = zona.Find("CASA", lookin:=xlValues) 
If Not c Is Nothing Then 
   inicio= c.Address 
   Do 
      c.Value = "HOGAR"
      Set c = zona.FindNext(c) 
   Loop While Not c Is Nothing And c.Address <> inicio
End If
 
Última celda con datos:
Set ultima = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column) 


Primera celda con datos
Set primera= Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, LookIn:=xlValues).Column)

lunes, 22 de agosto de 2016

Última fila Excel - GAS

Excel

Esta función busca incluso cuando hay filas vacias:

Function UltimaFila(lcHoja As String) As Integer
    UltimaFila = Sheets(lcHoja).Cells(Rows.Count, 1).End(xlUp).Row
End Function

Selección de filas

Como seleccionar todas las filas de una hoja:

Google App:

function GrabarPedido(){

var doc = SpreadsheetApp.getActiveSpreadsheet();  //Libro activo
var hoja = doc.getActiveSheet();  //Hoja Activa
var rows = hoja.getDataRange(); //Toma todas las filas de la hoja activa
var values = rows.getValues(); //Toma todos los valores de cada una de las filas de la hoja. A diferencia de excel cada fila incluye las filas en blanco
var numCols = rows.getNumColumns();
var numRows = rows.getNumRows();

}

Excel:

sub Seleccion()
    Sheets("MEDELLIN").Select 'Selecciona la hoja donde están los datos
    lnRows = Range("A7", Range("A7").End(xlDown)).Rows.Count 'Selecciona desde una celda en particula hacia abajo, hasta el final, pero se detendrá en la primera celda vacía que encuentre.
end sub

Otro ejemplo:
   Sub Test1()
      Dim x As Integer
      ' Establecer numrows = número de filas de datos.
      NumRows = Range("A2", Range("A2").End(xldown)).Rows.Count
      ' Seleccionar celda a1.
      Range("A2").Select
      ' Establecer valor "For" para que vaya de bucle el bucle durante "numrows" veces.
      For x = 1 To NumRows
         ' Inserte el código aquí.
         ' Selecciona la celda 1 fila por debajo de la celda activa.
         ActiveCell.Offset(1, 0).Select
      Next
   End Sub