Enchemento automático intelixente cara abaixo e á dereita

Contidos

Ata agora, ás veces con sorriso lembro unha das miñas primeiras formacións corporativas de campo hai 10 anos.

Imaxina: a oficina de espazo aberto da oficina de representación dunha empresa internacional de gran consumo, enorme como un campo de fútbol. Deseño elegante, equipos de oficina caros, código de vestimenta, expatriados arruulándose nas esquinas: iso é todo 🙂 Nunha das salas de reunións, comezo unha formación avanzada de dous días sobre a versión actual de Excel 2003 para 15 empregados clave do departamento económico. , xunto co seu líder. Coñecemos, pregúntolles por tarefas empresariais, problemas, pídolles que mostren varios ficheiros de traballo típicos. Mostran a lonxitude do quilómetro de descarga de SAP, as follas de informes que elaboran sobre isto, etc. Ben, é algo familiar: descubro mentalmente os temas e os tempos, axusto ao público. Coa esquina do ollo, noto como un dos participantes, mostrando unha parte do seu informe, tira pacientemente da cela coa fórmula pola cruz negra na esquina inferior dereita durante varios miles de liñas e, a continuación, salta o final de a mesa sobre a marcha, tíraa cara atrás, etc. Incapaz de aguantar, interrompoo enroscando o rato pola pantalla e mostro un dobre clic na cruz negra, explicando sobre o autocompletar ata a parada. 

De súpeto doume conta de que o público está sospeitosamente calado e todos me miran de xeito estraño. Miro imperceptiblemente ao meu redor onde podo: todo está ben, os meus brazos e as pernas están no seu sitio, a miña braga está abotoada. Rebobina mentalmente as miñas últimas palabras en busca dalgunha cláusula terrible: non había nada criminal, ao parecer. Despois diso, o xefe do grupo levántase en silencio, dáme a man e di con cara de pedra: "Grazas, Nikolai. Esta formación pódese completar.

Ben, en resumo, resultou que ningún deles tiña idea de facer dobre clic nunha cruz negra e autocompletar. Dalgunha maneira ocorreu historicamente que non había quen lles mostrase unha cousa tan sinxela pero necesaria. Todo o departamento sacou fórmulas manualmente para miles de liñas, pobres. E aquí estou. Escena óleo. O xefe do departamento pediu entón moito que non revelase o nome da súa empresa a ninguén 🙂

Varias veces despois houbo situacións similares, pero só con oíntes individuais; a maioría agora, por suposto, coñecen esta función. 

Enchemento automático intelixente cara abaixo e á dereitaA pregunta é diferente. Despois da primeira alegría de dominar unha función tan marabillosa, a maioría dos usuarios comprenden que a copia automática de fórmulas facendo dobre clic na cruz negra (marcador de autocompletar) ten todos os aspectos positivos e negativos:

  • A copia non sempre ocorre ata o final da táboa. Se a táboa non é monolítica, é dicir, hai celas baleiras nas columnas adxacentes, entón non é un feito que o autocompletado funcione ata o final da táboa. O máis probable é que o proceso deteña na cela baleira máis próxima antes de chegar ao final. Se hai celas ocupadas por algo debaixo da columna, entón o autocompletar deterase nelas exactamente.
  • Ao copiar o deseño celular estraga, porque Por defecto, non só se copia a fórmula, senón tamén o formato. Para corrixir, fai clic no botón de opcións de copia e selecciona Só valores (Encher sen formato).
  • Non hai unha forma rápida de estirar convenientemente a fórmula non abaixo senón á dereitaexcepto para tirar coa man. Facer dobre clic na cruz negra está abaixo.

Tentemos corrixir estas deficiencias cunha macro sinxela.

Preme o atallo do teclado á esquerda Alt + F11 ou botón Visual Basic aba revelador (Desenvolvedor). Insira un novo módulo baleiro a través do menú Inserir – Módulo e copia alí o texto destas macros:

Sub SmartFillDown() Dim rng As Range, n As Long Set rng = ActiveCell.Offset(0, -1).CurrentRegion Se rng.Cells.Count > 1 Then n = rng.Cells(1).Row + rng.Rows. Count - ActiveCell.Row ActiveCell.AutoFill Destino:=ActiveCell.Resize(n, 1), Type:=xlFillValues ​​End If End Sub Sub SmartFillRight() Dim rng As Range, n As Long Set rng = ActiveCell.Offset(-1, 0).CurrentRegion Se rng.Cells.Count > 1 Entón n = rng.Cells(1).Column + rng.Columns.Count - ActiveCell.Column ActiveCell.AutoFill Destino:=ActiveCell.Resize(1, n), Tipo: =xlFillValues ​​Finalizar Se Finalizar Sub  

Tales macros:

  • pode encher non só cara abaixo (SmartFillDown), senón tamén cara á dereita (SmartFillRight)
  • non estrague o formato das celas abaixo ou á dereita: só se copia a fórmula (valor).
  • ignóranse as celas adxacentes baleiras e a copia prodúcese exactamente ata o final da táboa, e non ata o oco máis próximo dos datos ou a primeira cela ocupada.

Para maior comodidade, pode asignar atallos de teclado a estas macros usando o botón Macros - Opcións (Macros — Opcións) alí mesmo na pestana. revelador (Desenvolvedor). Agora será suficiente introducir a fórmula ou o valor desexado na primeira cela da columna e premer a combinación de teclas especificada para que a macro encha automaticamente toda a columna (ou fila):

A beleza.

PS Parte do problema coa copia de fórmulas ao final da táboa resolveuse en Excel 2007 coa chegada das "táboas intelixentes". É certo que non sempre e non son apropiados en todas partes. E á dereita, Excel nunca aprendeu a copiar por si só.

  • Que son as macros, como usalas, onde obter o código de Visual Basic e onde pegalo.
  • Táboas intelixentes en Excel 2007-2013
  • Copiar fórmulas sen desprazamento de ligazón

Deixe unha resposta