EXCEL中,我想用VBA代码实现(E列F列G列H列I列)数据按条件输入.盼高人相助!

EXCEL中,我想用VBA代码实现(E列F列G列H列I列)数据按条件输入.盼高人相助!前言:我原来的EXCEL表格行数很多,但下一行和上一行相同的地方也比较多,完全不同的... EXCEL中,我想用VBA代码实现(E列F列G列H列I列)数据按条件输入.盼高人相助! 前言:我原来的EXCEL表格行数很多,但下一行和上一行相同的地方也比较多,完全不同的只有 k列,只有这列的数据每行都要填,(其它大多数的数据基本上都是自动生)。 具体要求如下: 一、当K列某单元格(该单元格原来是空白,不是修改数据)输入数据时: (一)如果同一行的C列单元格其上一单元格相等时: <1>、 如果本行的 E、F、G、H、I列中已有数据(不是空白时),保持原有数据不变。 <2>、如果本行的 E、F、G、H、I列中是空白时(没有数据),则这些单元格则等于上一单元格; (二)如果C列与上一单元格不相等时,无论在K列输入数据还是改动数据,对 E、F、G、H、I列都不起作用。(E、F、G、H、I列内原有数据〈包含空白〉,都保持不变) 二、当K列某单元格只是修改数据(该单元格原来不是空白,只是修改数据)的时候,则对所有单元格不发生作用.原有数据都保持不变 三、 E、F、G、H、I列这五列数据完全独立,互不相干; 我的数据从第三行开始,6万行结束 我想要的是:当K列的单元格是《空白,也就是原来K列的单元格里面没有数据在里面》时候,在K列输入数据后 【E列/ F列/ G列/H列I列 】分别同时达到以下功能(这几列完全一样,下面我以E列为例,来说明代码要求)。(备注:如果k列原来有数据,只是改动,所有已经输入的数据都不因为k列数据变化而变化,【本代码只有在k列为空白,输入数据才有效】)。: 1). 当在K列输入数据后,将会有两种情况〈下面以在K4单元格输入数据为例〉: 1.如果此时C4等于C3时,则K4输入一个数据后,E4等于E3。 2.如果此时C4不等于C3时,则K4输入一个数据后,E4内如果没有数据,保持空白.如果E4内以经有了数据,保持原有数据。<E列内数据允许修改善> 【本代码只有在k列为空白时,输入数据才有效,如果只是修改K列数据,则对E列无效,同行E列单元格内无论是空白还是有数据都要保持不变】。 2).同样 F列 G列 H列 I列和上面的要求完相同 感谢您看完我的提问.如果解决,不胜感激. 展开
 我来答
Excel开发
2014-05-12 · TA获得超过2912个赞
知道大有可为答主
回答量:1989
采纳率:53%
帮助的人:993万
展开全部
看得有点烦,不过楼主关心的区别K列空白不空白,楼主应该也会编程的,所以写了很多。
关于空白的识别,如更改的触发,我给个简单代码示例,首先要定义一个共用的变量,如下

Dim xx As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And xx = True Then
xx = False
Cells(Target.Row, 5) = 555
Cells(Target.Row, 6) = 666
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 11 And Target.Value = "" Then
xx = True
Else
xx = False
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姓王的wy451

2014-05-12 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8631万
展开全部

用事件代码可满足要求,详见附件。

只是要考虑K列数据输入的顺序,因为修改K列不能改变前面各列。

更多追问追答
追问
文件打不开,网页登不上
追答
文件没问题,重新下载一次吧。
代码如下:
Option Explicit
Dim S$
Private Sub Worksheet_Activate()
S = ActiveCell.Text
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I%
If Intersect(Target, [k4:k65536]) Is Nothing Or Target.Count > 1 Then Exit Sub
If S = "" Then
If Target.Offset(0, -8) = Target.Offset(-1, -8) Then
For I = -7 To -2
If IsEmpty(Target.Offset(0, I)) Then Target.Offset(0, I) = Target.Offset(-1, I)
Next
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
S = ActiveCell.Text
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浩哥奕弟
2014-05-12 · 杂七杂八想到什么就是什么
浩哥奕弟
采纳数:381 获赞数:956

向TA提问 私信TA
展开全部
千言万语不如加好友,Q与此号同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何眈忧伤
2014-05-12 · TA获得超过744个赞
知道小有建树答主
回答量:655
采纳率:33%
帮助的人:317万
展开全部
太长了,语文不好,看着头晕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式