celdas fantasma!

•Daniel•

New Member
Joined
Jun 5, 2009
Messages
44
tengo una hoja de un inventario que acabe de digitar a excel, el problema es que lo digité en diferentes libros de excel, ya lo pasé todo a un libro pero las cantidades están en columnas diferentes, si sumo ambas columnas pareciera que todo va bien.

Excepto que los códigos que no tienen cantidad quedan en ceros y preferiria que quedaran en blanco, luego hago un condicional que si las dos celdas están en blanco deje en blanco de lo contrario sume, todo de maravilla, quedan sumadas y los códigos sin existencias quedan con cantidad en blanco....el problema es que como son 9mill códigos ya que la columnad está llena de condicionales me gustaria pasar rapidamente por los q tienen existencias, usando la tecla control+abajo pero se salta de una al final de los códigos...

pensé que bastaría con seleccionar toda la columna ponerle ctrl+c ctrl+v y pegar solo valores, esto elimina los condicionales y las celdas se ven en blanco pero al usar contrl+dirrección sigue sin reconocer esas celdas como en blanco, es decir no me hace paradas intermedias entre los números de esa columna sino que toma como si todo estuviera lleno........

he intentado seleccionar todo y arle f5 ir a celdas en blanco y poner suprimir pero nada, tampoco las reconoce como en blanco, hay una forma de eliminar este "fantasma" e pararce en cada celda y darle suprimir, pero entiendan que son 9mill celdas, espero no haberlos confundido mucho

gracias
 

Excel Facts

Difference between two dates
Secret function! Use =DATEDIF(A2,B2,"Y")&" years"&=DATEDIF(A2,B2,"YM")&" months"&=DATEDIF(A2,B2,"MD")&" days"
Hola Daniel,

Decir que después de Ctrl+C y pegar solo valores su rango és P1:P9000

Proba esto eu un libro de ensayo (test-workbook)

Code:
Sub test1()
    Dim aCell As Range
    For Each aCell In Range("P1:P9000")
        If Len(aCell) = 0 Then
            aCell.ClearContents
        End If
    Next aCell
End Sub

Espero que ayude

M.
 
Upvote 0
Gracias,

Sí sirve me has ayudado a ampliar mis conocimientos en visual basic, también encontré como solucionar el problema sin necesidad de VB, al tener los datos solo como valores le doy f5 y me voy a constantes y no selecciono el cuadro de numéricas, luego me selecciona todos los espacios en blanco, le doy f2 y después ctrl+enter.
 
Upvote 0
Hola Daniel y Marcelo,
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
De hecho topé con algo igual hace poco y me tuvo bien, bien confundido. Hice un programa para un cliente para pasar datos de una hoja vieja a una nueva y también había columnas de validación de datos que usaban =ISBLANK() y ISBLANK() me estaba devolviendo FALSO para las celdas que debían haber estado completamente vacías.
<o:p></o:p>
La solución que hice fue algo parecido a lo que hizo Marcelo, un bucle que buscaba celdas de largo cero.
<o:p></o:p>
Un par de comentarios para otros lectores que pueden topar con la presente en el futuro.
<o:p></o:p>
(a) En este caso tratamos con valores y no con fórmulas. Si existían la posibilidad de tener fórmulas involucradas también sería necesario especificar eso en el código de Marcelo o sea:
<o:p></o:p>
If Len(aCell.Formula) = 0 Then
<o:p></o:p>


(b) Además a veces bucles son bastantes lerdos. Si la hoja no tiene demasiados cálculos puede ser que una combinación de las soluciones de Daniel y Marcelo brindará resultados óptimos. Además el siguiente también resuelva un problema con la solución de Daniel que es si una encuentra el problema de «blancos falsos» con una columna de texto y no de números.

<o:p>
Code:
<o:p>Sub LimpiarBlancosFalsos()</o:p>
<o:p></o:p>
<o:p>  Dim rngHelper       As Excel.Range, _
        rngSelection    As Excel.Range, _
        rngToClear      As Excel.Range
    </o:p>
<o:p>   If TypeName(Selection) <> "Range" Then Exit Sub
 
    Set rngSelection = Selection
    If rngSelection.Columns.Count > 1 Then Exit Sub
 
    Application.ScreenUpdating = False
    rngSelection.Offset(, 1).EntireColumn.Insert
    Set rngHelper = rngSelection.Offset(, 1)
 
    rngHelper.FormulaR1C1 = "=1/len(rc[-1])"
 
    On Error Resume Next
    Set rngToClear = rngHelper.SpecialCells(XlCellType.xlCellTypeFormulas, _
                                            XlSpecialCellsValue.xlErrors)
 
    If Not rngToClear Is Nothing Then
        Set rngToClear = rngToClear.Offset(, -1)
        rngToClear.ClearContents
    End If
 
    rngHelper.EntireColumn.Delete
    Application.ScreenUpdating = True
</o:p>
<o:p>End Sub</o:p>

Una posible falla del código arriba es que hay un máximo número de areas que un rango puede contener. La última vez que vi, el límite fue 2,048 areas.</o:p>
 
Last edited:
Upvote 0
Hi Greg,

Sorry for the delay in answering (i was abroad playing a Bridge tournament - no computer, no internet...:) )

Interesting solution. I liked it.

All the best

M.
 
Upvote 0

Forum statistics

Threads
1,224,516
Messages
6,179,231
Members
452,898
Latest member
Capolavoro009

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top