我正在尝试为用户提供对所选单元格执行简单算术运算的选项。 事实是,大多数单元格都是合并范围。
我已经掌握了以下内容,但问题是它遍历所有单元格,而我只希望它只影响那些未合并的单元格或仅影响合并范围的第一个单元格。
Sub test()
Application.ScreenUpdating = False
Dim cel As Range
Dim selectedRange As Range
myValue = InputBox("Enter")
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
On Error Resume Next
cel.Value = Evaluate(cel.Value & myValue)
Next cel
End Sub
答案 0 :(得分:0)
在 If 语句中使用 MergeCells 属性,您检查单元格是否未合并,然后执行以下语句,否则 Else 之后的语句。
在以下示例中,选择了范围 I3:M12 ,并输入了 5 作为 myValue 。第一个表是第二个表之前的状态。
Collapsed
我们可以通过添加 COUNT 列
来扩展以前的表格更明显的是在Excel中如何“忽略”合并的单元格,即除合并区域的第一个单元格以外的所有单元格都不会被计数(或求和,或...)。
下面显示了在VBA和Excel中对单元格进行计数之间的区别。
Sub test()
Dim cel As Range
Dim selectedRange As Range
Dim myValue As Double
Application.ScreenUpdating = False
myValue = InputBox("Enter")
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
If Not cel.MergeCells Then
' If not merged cell.
cel.Value = Evaluate(cel.Value & myValue)
Else
' if merged cell.
cel.Value = Evaluate(cel.Value + myValue)
End If
Next cel
Application.ScreenUpdating = True
End Sub
立即窗口中的结果是
10 , 9 , 50 , 46 ,
显示 VBA 如何计算每个单元格,但是 Excel 将排除合并区域中除第一个单元格以外的所有单元格。
在VBA帮助中搜索 MergeArea 属性以获取更多信息。
答案 1 :(得分:0)
尽管 VBasic2008 的答案有效,但这并不完全正确。问题在于,合并范围内的每个单元格始终为ruby '2.4.1'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.2'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
gem 'mongoid'
gem 'moped'
gem 'mongoid-audit'
gem 'mongoid-history'
gem 'mongoid-enum'
gem 'mongoid_search'
属性返回True
。这意味着对于左上角单元格以外的单元格,会在循环中进行过多处理(即,增加值)。要解决这种情况,您应该测试每个单元的处理需求。您可以通过几种方式执行此操作:
您可以将一个单元格的地址与左上角的单元格地址(代码中的MergedCells
)进行比较。
您可以测试单元格值的长度。如果为零,则它不是左上角的单元格,因此可以跳过它(代码中的Option 1
)。
代码:
Option 2