<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Excel on F嘉阳</title><link>https://blog.fjy8018.top/tags/excel/</link><description>Recent content in Excel on F嘉阳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 07 Sep 2023 15:04:03 +0800</lastBuildDate><atom:link href="https://blog.fjy8018.top/tags/excel/index.xml" rel="self" type="application/rss+xml"/><item><title>Excel使用宏将复杂操作自动化</title><link>https://blog.fjy8018.top/archives/152/</link><pubDate>Sat, 12 May 2018 12:42:00 +0800</pubDate><guid>https://blog.fjy8018.top/archives/152/</guid><description>&lt;h2 id="简单宏操作"&gt;&lt;a href="#%e7%ae%80%e5%8d%95%e5%ae%8f%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;简单宏操作&#10;&lt;/h2&gt;&lt;p&gt;Excel的宏实质是VB语句，现考虑制作一个宏用于将当前表中的数据复制成4个工作簿&lt;/p&gt;&#10;&lt;h3 id="录制"&gt;&lt;a href="#%e5%bd%95%e5%88%b6" class="header-anchor"&gt;&lt;/a&gt;录制&#10;&lt;/h3&gt;&lt;p&gt;打开目标工作簿，当前只有&lt;code&gt;Sheet1&lt;/code&gt;中有数据，预期结果是将当期数据复制到&lt;code&gt;Sheet2&lt;/code&gt;、&lt;code&gt;Sheet3&lt;/code&gt;、&lt;code&gt;Sheet4&lt;/code&gt;中&#10;&lt;img alt="请输入图片描述" class="gallery-image" data-flex-basis="569px" data-flex-grow="237" height="809" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/2vOyVF.png" width="1920"&gt;&lt;/p&gt;&#10;&lt;p&gt;点击视图-&amp;gt;录制宏&#10;&lt;img alt="请输入图片描述" class="gallery-image" data-flex-basis="923px" data-flex-grow="384" height="299" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/2vMdPt.png" width="1151"&gt;&lt;/p&gt;&#10;&lt;p&gt;指定名称和快捷键即可开始录制操作&#10;&lt;img alt="请输入图片描述" class="gallery-image" data-flex-basis="234px" data-flex-grow="97" height="373" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/2vMKfT.png" width="364"&gt;&lt;/p&gt;&#10;&lt;h3 id="查看代码"&gt;&lt;a href="#%e6%9f%a5%e7%9c%8b%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;查看代码&#10;&lt;/h3&gt;&lt;p&gt;录制完成后店家查看宏，选择编辑即可查看VB代码&#10;&lt;img alt="请输入图片描述" class="gallery-image" data-flex-basis="231px" data-flex-grow="96" height="470" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/2vMYMM.png" width="454"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="请输入图片描述" class="gallery-image" data-flex-basis="493px" data-flex-grow="205" height="929" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://gitea.fjy8018.top/fjy8018/images/raw/branch/blog/img/2vO2Gr.png" width="1912"&gt;&lt;/p&gt;&#10;&lt;p&gt;在此提供代码，注意，该代码起点是&lt;code&gt;Sheet2&lt;/code&gt;,即切换到&lt;code&gt;Sheet2&lt;/code&gt;中才能开始执行，否则会报错&#10;Sub 复制()&#10;'&#10;&amp;rsquo; 复制 宏&#10;'&#10;&amp;rsquo; 快捷键: Ctrl+o&#10;'&#10;Cells.Select&#10;Selection.Copy&#10;Sheets(&amp;ldquo;Sheet2&amp;rdquo;).Select&#10;ActiveSheet.Paste&#10;Sheets(&amp;ldquo;Sheet3&amp;rdquo;).Select&#10;ActiveSheet.Paste&#10;Sheets.Add After:=ActiveSheet&#10;ActiveSheet.Paste&#10;Range(&amp;ldquo;E29&amp;rdquo;).Select&#10;Application.CutCopyMode = False&#10;ActiveWorkbook.Save&#10;End Sub&lt;/p&gt;&#10;&lt;h2 id="复杂宏"&gt;&lt;a href="#%e5%a4%8d%e6%9d%82%e5%ae%8f" class="header-anchor"&gt;&lt;/a&gt;复杂宏&#10;&lt;/h2&gt;&lt;p&gt;VB自然支持函数（宏）调用，例如以下代码，先录制了三个预测函数操作，通过一个&lt;code&gt;预测()&lt;/code&gt;宏对三个函数操作进行调用&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Sub 预测线性()&#10;'&#10;' 预测线性 宏&#10;'&#10;' 快捷键: Ctrl+a&#10;'&#10; Range(&amp;quot;A31&amp;quot;).Select&#10; ActiveCell.FormulaR1C1 = &amp;quot;=R[-26]C+1&amp;quot;&#10; Range(&amp;quot;A32&amp;quot;).Select&#10; ActiveWorkbook.Save&#10; Range(&amp;quot;B31&amp;quot;).Select&#10; Application.CutCopyMode = False&#10; ActiveCell.FormulaR1C1 = _&#10; &amp;quot;=FORECAST(RC[-1],R[-26]C:R[-1]C,R[-26]C[-1]:R[-1]C[-1])&amp;quot;&#10; Range(&amp;quot;A31:B31&amp;quot;).Select&#10; Selection.Font.Bold = True&#10; ActiveWorkbook.Save&#10;End Sub&#10;Sub 指数预测()&#10;'&#10;' 指数预测 宏&#10;'&#10;' 快捷键: Ctrl+e&#10;'&#10; Range(&amp;quot;A31&amp;quot;).Select&#10; ActiveCell.FormulaR1C1 = &amp;quot;=R[-26]C+1&amp;quot;&#10; Range(&amp;quot;B31&amp;quot;).Select&#10; Application.CutCopyMode = False&#10; Application.CutCopyMode = False&#10; Application.CutCopyMode = False&#10; ActiveCell.FormulaR1C1 = _&#10; &amp;quot;=GROWTH(R[-26]C:R[-8]C,R[-26]C[-1]:R[-8]C[-1],RC[-1])&amp;quot;&#10; Range(&amp;quot;A31:B31&amp;quot;).Select&#10; Selection.Font.Bold = True&#10; ActiveWorkbook.Save&#10;End Sub&#10;Sub 对数预测()&#10;'&#10;' 对数预测 宏&#10;'&#10;' 快捷键: Ctrl+w&#10;'&#10; Application.Run &amp;quot;PERSONAL.XLSB!预测线性&amp;quot;&#10; Range(&amp;quot;B31&amp;quot;).Select&#10; Selection.ClearContents&#10; Range(&amp;quot;B31&amp;quot;).Select&#10; ActiveCell.FormulaR1C1 = &amp;quot;=(Sheet1!RC+Sheet3!RC)/2&amp;quot;&#10; Range(&amp;quot;B31&amp;quot;).Select&#10; ActiveWorkbook.Save&#10;End Sub&#10;Sub 预测()&#10;'&#10;' 预测 宏&#10;'&#10;' 快捷键: Ctrl+q&#10;'&#10; Application.Run &amp;quot;PERSONAL.XLSB!预测线性&amp;quot;&#10; Sheets(&amp;quot;Sheet3&amp;quot;).Select&#10; Application.Run &amp;quot;PERSONAL.XLSB!指数预测&amp;quot;&#10; Sheets(&amp;quot;Sheet2&amp;quot;).Select&#10; Application.Run &amp;quot;PERSONAL.XLSB!对数预测&amp;quot;&#10; ActiveWorkbook.Save&#10;End Sub&#10;&lt;/code&gt;&lt;/pre&gt;&#10;</description></item></channel></rss>