天道酬勤,学无止境

如果没有 VBA 的列的单元格中有值,则将列标题显示为一行(Show the column header to a row if there is value in cells of that columns without VBA)

问题

更新 1:

因为我的问题不清楚,所以我发布了第二个例子

示例 2

因为第 2 行,Item 04 的值为 1,所以 Get Item Name = Item 04。它是随机的,并且有大量的列 (500)。

问题:

如果该标题下的单元格有任何值输入,我想有一种方法来获取列标题。 请注意,如果第 2 行和第 1 列有值,则第 2 行的其他单元格将没有任何值(0 除外)。

很难用语言来解释这个问题,所以我创建了一个例子。

样本

回答1

我在上面的评论中发布了一个公式,你可能没有看到。 就是这个:

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2<>"",0),0)))

这将获得填充单元格的第一个实例的标题 - 如果您有数值并且想要忽略零更改为

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2>0,0),0)))

无论哪种方式,公式都可以根据需要扩展到尽可能大的范围

.....如果你有 500 列,你可以使用 IFERROR 来缩短一点

=IFERROR(INDEX($B$1:$D$1,MATCH(TRUE,INDEX($B2:$D2>0,0),0)),"")

回答2

对于具有可数列数(即 3)的相对小表的特定表,试试这个

=IF(COUNTA(G8)>0,"Column 1",IF(COUNTA(H8)>0,"Column 2",IF(COUNTA(I8)>0,"Column 3",""))).  

我的问题是,如果您的表包含 20 或 100 列怎么办?

回答3

我假设当您说“列标题”时,您的意思是“行标题”

考虑到第一个单元格(包含文本"Column Header" )位于A1这是您必须在单元格A2引入的公式:

=IF(B2>0, $B$1, IF(C2>0, $C$1, IF(D2>0, $D$1, "")))

根据需要将这个公式向下拖动到尽可能多的行上,它会(希望)实现您想要的。

回答4

假设您想要一个超过 3 列的解决方案,此公式将返回正确的标题。

我假设您的数据从第 2 行 B 列开始,第 1 行包含列标题。

在 B1 中使用此公式并将其复制下来:

=IF(COUNTA($B2:$D2)=0,"",INDEX($B$1:$D$1,MATCH(FALSE,INDEX(ISBLANK($B2:$D2),0),0)))

如果您的数据超出 D 列,只需在公式中更改即可。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在Excel 2007中将具有数据列的行转换为具有多行的列(Convert row with columns of data into column with multiple rows in Excel 2007)
    问题 我有一排数据如下: header1 header2 header3 header4 header5 row key datavalue1 datavalue2 datavalue3 datavalue4 datavalue5.... 所以基本上,我有一个非规范化的数据集,其中数据值在逐行的基础上可以为空,也可以不为空。 我需要将它们标准化。 IE 12345678 NULL 10 3 NULL 14 会成为: 12345678 header2 10 12345678 header3 3 12345678 header5 14 我可以通过使用粘贴特殊转换来做到这一点,但是我有成千上万的行,因此我需要确保每个行都有正确的行键。 此外,每一行都有一堆与之相关的描述,我需要将其与每个数据值一起复制。 什么是最简单的方法来转换每一行的列,以使我在一个列中包含所有非空数据值加上相关数据值引用的多行? 我需要能够透视数据集。 回答1 如果您有五个“标题”列,请输入以下公式 H1: =OFFSET($A$1,INT((ROW()-1)/5)+1,0) I1: =OFFSET($A$1,0,IF(MOD(ROW(),5)=0,5,MOD(ROW(),5))) J1: =INDEX($A$1:$F$9,MATCH(H1,$A$1:$A$9,FALSE),MATCH(I1,$A$1:$F$1
  • Excel - 根据值的变化对整行进行着色(Excel - Shading entire row based on change of value)
    问题 我想根据一个单元格的值在 Excel 中对整行进行着色。 例如说我有以下行: **File No** 1122 1122 1144 1155 1155 1155 1166 我希望前两行(文件 # 的值为 1122)以颜色 1 着色,下一行(文件 # 的值为 1144)以颜色 2 着色,接下来的 3 行(其中文件#的值为1155)被着色为1,下一行(文件#的值为1166)被着色为2 回答1 您可以做的是在电子表格的右侧创建一个新列,您将使用该列来计算可以作为阴影基础的值。 假设您的新列是 D 列,您要查看的值在 A 列中,从第 2 行开始。 在单元格 D2 中输入: =MOD(IF(ROW()=2,0,IF(A2=A1,D1, D1+1)), 2) 根据需要将其填满(然后根据需要隐藏该列)。 现在突出显示您的整个数据集 - 此选择的单元格将在下一步中着色。 从“主页”选项卡中,单击“条件格式” ,然后单击“新建规则” 。 选择使用公式来确定要设置格式的单元格。 在“此公式为真的格式值”中输入=$D2=1 单击“格式”按钮,单击“填充”选项卡,然后选择要着色的颜色。 这里的例子: 回答2 我讨厌使用这些单元格公式并且不得不填写一个新列,我终于学会了足够的知识,可以通过自己的 VBA 宏来实现这种效果。 这可能与另一个答案在逻辑上没有什么不同,但我认为代码看起来好多了: Dim
  • 将公式应用于整列(Apply formula to the entire column)
    问题 我正在尝试使用以下公式将 A 列中的所有邮政编码重新编码到 B 列中: =TEXT(A1,"00000") 像这样: 我希望使用上面的公式转换 B 列中的每个单元格。 但是我有超过 40,000 行,因此无法将公式拖下并将其应用于整个 B 列。 有没有我可以用来解决这个问题的公式? 回答1 我认为这是一个更新的功能,但它对我有用: 双击突出显示单元格右下角的方块复制突出显示单元格的公式。 希望能帮助到你。 回答2 看起来其他一些答案已经过时了,但对我来说这是有效的: 单击带有文本/公式的单元格进行复制 Shift+单击要复制到的最后一个单元格 Ctrl +输入 (请注意,如果目标单元格不为空,这将替换文本) 回答3 我认为你很幸运。 请尝试输入B1: =text(A1:A,"00000") (非常相似!)但在按 Enter之前按Ctrl + Shift + Enter 。 回答4 假设您想替换字符串数组中的某些内容,并且不想在整个工作表上执行复制粘贴。 让我们以此为例: “A”列中的字符串数组:{apple、banana、orange、...、avocado} 您想将“a”的字符替换为“x”以获得:{xpple, bxnxnx, orxnge, ..., xvocado} 要以简洁优雅的方式在整个列(数组)上应用此公式,您可以执行以下操作: =ARRAYFORMULA
  • Excel 用 VBA 合并所有列(Excel merge all columns with VBA)
    问题 我正在使用 MS Excel 2010,我有一个没有宏和公式的 Excel 工作表,一切都是原始格式。 该工作表包含许多列和行(列 A 到 WC),如下图所示。 ~ represents split view between columns # represents row number | A | B | C | ~ | AA | AB | ~ | WC | ----------------------------------------- |# 1| x | x | x | ~ | x | x | ~ | x | |# 10| x | x | x | ~ | x | x | ~ | x | |# 100| x | x | x | ~ | x | x | ~ | x | |#1000| x | x | x | ~ | x | x | ~ | x | |#2000| x | x | x | ~ | x | x | ~ | x | |#3000| x | x | x | ~ | x | x | ~ | x | 我想(合并)将所有列从“B”移动到“WC”到“A”列的最后一行。 不得丢弃“A”列的内容。 “B”到“WC”的每一列都必须插入到“A”列的最后一行下方 示例(之后): | A | B | C | ~ | AA | AB | ~ | WC | ---------------
  • AutoFit 不适用于换行文本(AutoFit doesn't work with wrapped text)
    问题 我在细胞中有一个 Chr(10) cell.WrapText = False cell.EntireRow.AutoFit ' AutoFit works ' ------------ but: cell.WrapText = True cell.EntireRow.AutoFit ' AutoFit works only if the cell has less then five lines. 如果我添加一些字符(多一行)- AutoFit 不起作用。 文本在第一行和最后一行被剪切。 ver - 著名的 excel 2010 回答1 这取决于数据有多大以及列的宽度是多少。 行可以展开的最大高度是409.5 (546 pixels) 。 如果您手动增加行高,您会注意到在特定高度之后,您将无法增加行高。 检查高度是多少:) 宽度的概念也是如此。 这适用于行和列。 在列的情况下,最大宽度为254.86 (1789 pixels) 我将此代码用于演示目的。 Option Explicit Sub Sample() ActiveCell.WrapText = True ActiveCell.EntireRow.AutoFit MsgBox ActiveCell.RowHeight End Sub 看这个截图 这有效 这不 该行已达到最大值。 它不能超越那个。
  • Excel:下拉列表取决于其他下拉列表(Excel: Dropdown list dependant on other dropdown list)
    问题 我要在Excel中执行以下操作: 相邻单元格中的两个下拉列表: 下拉列表#1 | 下拉列表#1 Dropdown list 1: One Two Three 如果在第一个单元格中选择“一个”,则第二个单元格中的列表应包含以下选择: One: 1.1 1.2 1.3 如果在第一个单元格中选择“两个”,则第二个单元格中的列表应包含以下选择: Two: 2.1 2.2 2.3 等等。 周围有很多教程,但是我在弄清楚其中哪个教程可以解决这个确切问题方面有些麻烦。 更新:一个例子。 选择f.ex. 在“组”标题(“ col A”)下的“第1组”中,右侧“第1组”中列出的条目(“ col D”)应出现在“项目”标题(“ col B”)下。 其他组也一样。 回答1 按承诺更新: 使用列表进行验证时,必须输入如下所示的范围。 偏移功能允许根据其输入标准动态设置范围。 如果您考虑以下情况: =OFFSET(C1,0,0,1,1) 参数1 =锚点单元格参数2 =要移动的行数,您可以在此处使用减号来向上移动行,而可以使用正数向下移动参数3 =要移动的列数。 负数为左,正数为右。 参数4 =范围的高度(不能为负,是可选的,默认为1) 参数5 =范围的宽度(不能为负,是可选的,默认为1) 在这种情况下,返回的范围将为C1因为我们没有行或列的偏移量,并且高度和宽度设置为1 MATCH函数将返回一个索引
  • 计算单元格中的文本行数(Count lines of text in a cell)
    问题 我有一个 Excel 工作数据电子表格,需要在 VBA 中拆分。 几列有多行文本,而其他列则没有。 我已经找到了如何拆分多行文本的方法,我的问题是将列中的一行文本复制下来。 例如: Company_Name Drug_1 Phase_2 USA Drug_2 Discontinued Drug_3 Phase_1 Europe Drug_4 Discontinued 下面是我用来拆分 B 列和 C 列的代码,然后我可以手动处理 D,但是我需要 A 列向下复制到第 2-4 行。 像这样有超过 600 行,否则我只会手动完成。 (注意:我将 B 列放入下面的 A,将 C 列放入 C) Sub Splitter() Dim iPtr1 As Integer Dim iPtr2 As Integer Dim iBreak As Integer Dim myVar As Integer Dim strTemp As String Dim iRow As Integer 'column A loop iRow = 0 For iPtr1 = 1 To Cells(Rows.Count, 1).End(xlUp).Row strTemp = Cells(iPtr1, 1) iBreak = InStr(strTemp, vbLf) Range("C1").Value = iBreak Do
  • 仅使用公式在Excel中获取唯一值(Getting unique values in Excel by using formulas only)
    问题 您知道Excel中通过公式“计算”唯一值列表的方法吗? 例如:垂直范围包含值"red" , "blue" , "red" , "green" , "blue" , "black" 我希望结果是"red , "blue" , "green" , "black" +最终还有其他2个空白单元格。 我已经找到了一种将SMALL或LARGE与INDEX结合使用来获得计算出的排序列表的方法,但是我也希望在不使用VBA的情况下也具有这种计算出的排序。 回答1 这是一个老歌,有一些解决方法,但是我想出了一个比我遇到的任何其他方法都更短,更简单的公式,这对路过的任何人都可能有用。 我将颜色列表命名为Colors (A2:A7),单元格C2中的数组公式为(固定): =IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"") 使用Ctrl+Shift+Enter在C2中输入公式,然后将C2复制到C3:C7中。 带有示例数据{“ red”;的说明 “蓝色”; “红色的”; “绿色”; “蓝色”; “黑色的”}: COUNTIF(Colors,"<"&Colors)返回一个数组(#1),其值的计数小于数据{4; 1; 4; 3; 1; 0}(黑色= 0,蓝色= 1个项目,红色=
  • 使用 oledb 读取 excel 未显示正确值(reading excel with oledb not displaying correct values)
    问题 这是我发布的老问题: 使用 c# 阅读并更新其他一些 Excel 按照建议,我创建了 schema.ini 文件。 我的 excel 文件有很多列(其中许多是不固定的)和混合数据。 甚至一个单元格也包含数字和文本。 我观察到当我使用 OLEDB 读取 excel 并填充到数据表中时,并未显示所有值。 我不能假设所有列都放入 .ini 文件中。 我的 excel 中的列将上升到“DX”。 我观察到只显示了具有数字+文本值的第一行,但未显示下方某处出现的类似文本。 它显示为空白。 这是连接字符串: string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + FilePath+ "';Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text\"" ; 有什么解决方案可以读取所有类型的数据吗? 回答1 这出现了很多,这是很容易理解的,因为文档有点缺乏 Microsoft.ACE.OLEDB.12.0 不能很好地处理混合数据类型的列。 因此,驱动程序将始终读取每列中的前 n 个值,并根据它在该列的前 n 个单元格中找到的内容分配数据类型。 n 由注册表项的设置决定。 它会根据您是 64 位实现还是
  • 基于公共单元格连接 (Excel) 行,包括不同的列(Concatenate (Excel) rows based on common cell, including different columns)
    问题 我一直在寻找一种方法来连接基于常见单元格的 Excel(或任何其他工具/软件处理表)行。 举个例子: 我有这个制表位分隔表。 每个值都在单独的行中: angeb* 12 16 18 zyste* 60 61 zynisch* 12 zyste* 60 abstreit* 70 anflunker* 70 angeb* 70 我想以结果为的方式连接行: angeb* 12 16 18 70 zyste* 60 61 zynisch* 12 abstreit* 70 anflunker* 70 它确实按照本教程中的建议工作,但它只会将单个单元格值连接到另一个单元格中。 我也尝试走这条 so 问题基本上提出的路径,最后引导我到 VLOOKUP(描述)。 但它们都连接在单元格中。 基本上很简单,我需要合并具有相同第 1 列的单元格,但保留列,只是连接超出。 一旦将第二行添加到第一行,就可以删除第二行。 我尝试调整上述脚本,但我无法一步完成,然后将逗号分隔的值转换为单元格并将它们复制到新列。 我不是 VBA 专家,但这似乎是一个非常简单的功能,我可能会遗漏一些东西。 任何帮助是极大的赞赏。 回答1 我已经对我所做的每一部分进行了编写和颜色编码,但这里是通用方法: 排序所有数据AZ 使用 CountIf 语句计算特定数据行出现的次数。 假设有 3 列数据,找到 MaxRows 的 MAX
  • 使用vba查看和隐藏excel中的列(View and hide columns in excel using vba)
    问题 我有一个工作表,在 B:G 列中有值。 在单元格 A1 的同一张表中,我使用数据验证制作了一个下拉列表,其中包含 A、B 和 C 等值。 我需要的是当我选择单元格值 A 时,列 B:C 需要可见,其他列应该对 D:G 隐藏。 同样,如果我从列表中选择 B,我需要查看列 D:E 和 B:C 和 F:G 应该隐藏。 你能帮我解决这个问题吗? 注意:我对 VBA 没有很好的了解。 回答1 试试这个: 打开 VBA 编辑器 ( ALT + F11 ) 双击Sheet1 选择左上角下拉菜单中的Worksheet和右上角下拉菜单中的Change 粘贴此代码 注意-这假设数据验证在单元格A1 Private Sub Worksheet_Change(ByVal Target As Range) Dim allColumns As Range Set allColumns = Columns("B:G") allColumns.Hidden = True If Not Intersect(Target, Range("A1")) Is Nothing Then If Target.Value = "A" Then Columns("B:C").Hidden = False ElseIf Target.Value = "B" Then Columns("D:E").Hidden = False
  • 如何使用excel文件的文件名更改一列单元格?(How to use the filename of an excel file to change a column of cells?)
    问题 我正在尝试编写一个 excel 宏/VBA 代码来根据文件的标题调整列的内容。 目前,我有一个宏设置,可以根据我输入的 URL 下载 csv 文件。宏会自动格式化和命名文件。 我想使用文件名/标题的前 5 个字符来自动设置其他单元格的格式。 例如,文件名为 48GHY_fjfdkjfe33.RHRH-msadklfjeiojo。 我的文件中有一个名为 name+type 的列。 我想将“名称”行与标题结合起来,并让它填充字段。 下面的两张图片提供了之前和之后。 目前,我必须在单独的字段中输入前 5 个字符,然后使用:="48GHY"&a2 函数。 有没有办法在 excel/VBA 中做到这一点? 最初的问题已得到解答,但现在我在尝试将其放入宏时正在寻求其他帮助。 因为它仍然是同样的问题,我认为它不需要另一个帖子。 这是我正在使用的当前宏/VBA。 当我运行它时,它只显示#VALUE! 在单元格中。 两组代码之间唯一不同的是,A 和 B 列现在是 J 和 K。 ' Insert Column after name and then rename it name+type Rows(1).Find("name").Offset(0, 1).EntireColumn.Insert Rows(1).Find("name").Offset(0, 1).FormulaR1C1 =
  • 如何避免溢出的性能成本:隐藏?(How to avoid the performance cost of overflow:hidden?)
    问题 我有一个 HTML 表,它可以超过 1K 行和十几个列。 我希望列是固定大小(可由用户控制),而不是垂直或水平增长/收缩。 因此,在视觉上,特定表格单元格的内容将在一行上,并且溢出在单元格的末尾被切断。 在 Chrome 中对一张大表进行性能分析,主要的性能杀手是overflow:hidden 。 我尝试将每个单元格的内容放在输入中,因为这会复制相同的视觉行为,但会产生类似的性能影响。 人们推荐什么来提高性能? 如有必要,我不必使用表格标签,但如果可以实现良好的性能,我宁愿坚持使用表格标签。 更新 1 :我在此处包含了一个演示性能问题的文件。 警告该文件非常大 (25MB),会降低您的计算机速度。 默认情况下,该表不会将溢出设置为隐藏,并且一旦该表被加载(可能需要一段时间),浏览器的性能就会相对平稳。 但是,如果您编辑文件并取消注释第 12-15 行,然后打开它。 加载浏览器后,您会看到桌子周围的响应明显变慢。 回答1 仅供参考:我在 iPad/iOS 上遇到了这个问题,导致页面性能问题,该页面在 table-layout:fixed 的表中有大约 100 行。 一旦单元格或单元格中的 div 获得强制单独绘制单元格的属性,绘制大约需要 300 毫秒而不是 100 毫秒(这会导致 UI 在我的情况下感觉非常慢)。 两个属性( position
  • C#:DataGridView 在右侧和滚动条上的额外空间(C#: DataGridView's extra space on right-hand side and scrollbar)
    问题 我有一个DataGridView控件,列数每 10 分钟根据用户的输入而变化。 需要实现的是: DataGridView需要在没有水平滚动条的情况下显示所有列,除非它影响任何单元格内容的可读性。 如果它开始隐藏单元格内容,则需要出现水平滚动条。 无论当前显示了多少列,也无论是否显示水平滚动条,都必须填充DataGridView数据的右侧,以便没有未使用的空间。 无论单元格内容的长度如何,所有列宽都需要相同。 (一个单元格可以有一个从 10 到 9999 的整数) 所有这 3 个要求都需要同时满足,但如果我试图满足一个要求,其他的就会崩溃。 我确信无论如何总是至少有 16 列。 是否有更多列实际上取决于用户。 有人能告诉我以下有什么问题吗? int countVisible = 0; //Count the number of columns displayed foreach(DataGridViewColumn col in myDGV.Columns) if(col.Visible) countVisible++; //By default, use Fill mode DataGridViewAutoSizeColumnMode mode = DataGridViewAutoSizeColumnMode.Fill; //I am trying to show up to
  • 根据另一个工作表和单元格中的值格式化单元格颜色(Format cell color based on value in another sheet and cell)
    问题 我有一本工作簿,里面有两张纸。 我想根据工作表 2 第二列中的值格式化工作表 1 第一列中的单元格背景颜色。 例如,如果 sheet2 第 6 行第 2 列的值是 4,那么我希望第 1 页第 4 行第 1 列的背景颜色为绿色。 如果表 2 中的第 2 列中没有任何值引用表 1 中的特定行,我想将其设置为无颜色。 没有禁止同一值在工作表 2 的第二列中多次出现。如果您能告诉我如果工作表 2 中指向工作表 1 中的行的最后一个值被删除,如何取消设置颜色,那就太棒了。 我敢肯定,对于 Excel 向导来说,这可能是微不足道的,但我很少有机会使用 excel,当然也没有时间成为其中的黑带。 任何人都可以为我提供建议、指示或快速公式来做到这一点吗? 如果这需要一些复杂的 VB 代码来实现,那就不值得了。 谢谢! 回答1 下面是我在 Excel 2003 中使用条件格式的方法。 要使用Sheet2值将条件格式应用于Sheet1 ,您需要将这些值镜像到Sheet1 。 创建 Sheet2 的镜像,Sheet 1 中的 B 列 转到Sheet1 。 通过右键单击 A 列的标题并选择“插入”来插入新列。 在 A1 中输入以下公式: =IF(ISBLANK(Sheet2!B1),"",Sheet2!B1) 通过右键单击并选择“ Copy ”来复制A1 。 通过右键单击其标题并选择“ Paste
  • 自动筛选,列的格式设置为日期(Autofilter with column formatted as date)
    问题 我在Excel中使用了带有VBA的自动过滤器,该过滤器适用于常规过滤器,但不适用于格式化为日期的列。 我可以手动过滤。 如果我运行我的代码,它将过滤任何东西,但是当我检查过滤器然后仅单击“确定”(未对过滤条件应用更改)时,它将正确过滤。 这是我的代码: ws.ListObjects(SheetName).Range.AutoFilter Field:=3, Criteria1 _ :=">" & CDate([datecell]), Operator:=xlAnd, Criteria2:= _ "<=" & CDate(WorksheetFunction.EoMonth([datecell], 3)) 这似乎是一个普遍的问题,但是我还没有找到解决方案。 当我运行一个录制的宏时,它也不起作用。 回答1 使用Excel VBA AutoFilter,日期可能会比较棘手。 一些人发现循环遍历要过滤的数组会更容易。 有时我发现人们可以使用日期的数值,特别是在处理“之间的日期”时 Criteria1:= ">" & CDbl([datecell]) Criteria2:= "<=" & CDbl(WorksheetFunction.EoMonth([datecell], 3)) 请注意,上面的内容必须是“实际日期”,而不是看起来像日期的字符串。 即使是单个“字符串日期
  • 标题需要根据条件添加 2 列的通用公式吗?(Heading need general formula for addition of 2 columns based on conditions?)
    问题 我有 3 列。 A列、B列、C列。A列包含条件,B列包含一些值,C列包含一些值。 Col A Col B Col C y 2 y 3 d 4 y 5 2 y 6 3 n 7 b 8 y 9 Sum= 我需要一个公式,当 C 列中没有值时,对 B 的值求和,当 B 列中没有值时,对 C 列的所有值求和,但是当 B 列和 C 列中都有值时,它更喜欢 C 列和把它的值放在总和中,我只想添加 A 列中状态为 y 的值。 示例:像 B 列的值 = 5 和 C 列的值 = 2 所以我的公式应该更喜欢 2 并在总和中添加 2 并留下 5 列 B 的平均值。 否则很简单,如果我在 A 中有值,只需将这些值添加到总和中,如果我在 B 中有值,则在总和中添加该值。 我有一个公式,但它仅适用于从两列添加值。 =SUMPRODUCT(--($C2:C9="y"); $B2:B9+$C2:C9)这是从我拥有的所有列中添加值的公式,但是当 B 列和 C 列都有值时我需要一个条件并且我需要更喜欢列 C 的值,并且只为总和选择 C ​​值。 根据条件从 2 列中选择/选择 1 列值的公式(用于添加) 我更简单的方法 只需添加来自 Col B 和 Col C 的 y 的所有值,但是当我们在 Col B 和 Col C 中都有值时,则首选列 C 并仅考虑列 C 的总和值并忽略 Col B 的值 回答1
  • 在 Word 2010 中使用 VBA 更改表格中的列宽(Using VBA in Word 2010 to change column widths in a table)
    问题 我刚刚开始使用 VBA,使用的是 Word 2010 的旧副本。我想调整三列表中两列的大小并格式化列中的文本。 此代码由 Word 的宏记录器生成: Selection.ConvertToTable Separator:=wdSeparateByCommas, NumColumns:=3, _ NumRows:=14, AutoFitBehavior:=wdAutoFitContent With Selection.Tables(1) .Style = "Table Grid" .ApplyStyleHeadingRows = True .ApplyStyleLastRow = False .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = False End With Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter 现在我希望前两列宽 1.3 英寸,第三列宽 5.1 英寸。 然后我想更改第三列中文本的格式以增加字体大小。 当我调整列大小时,宏记录器似乎没有记录。 关于如何编辑此代码的任何建议? 回答1 控制表相当复杂。 Word 以它认为合适的方式完成了大部分工作,但是如果您使用 VBA,您必须控制。 通过调用 Selection
  • 使用列引用清除VBA中单元格的内容(Clear contents of cells in VBA using column reference)
    问题 我正在尝试使用列引用来获取一段代码来清除某些单元格中的数据。 我正在使用以下代码: Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents 为此,但是在第一个.Cells部分出现错误,这是为什么呢? 回答1 您可以使用Worksheet.Columns对象访问整个列作为范围 就像是: Worksheets(sheetname).Columns(1).ClearContents 应该清除A列的内容 如果您需要对行执行类似的操作,则还有Worksheet.Rows对象 您收到的错误很可能是由于缺少块。 您可以在此处阅读有关块的信息:Microsoft帮助 回答2 对于像我这样遇到过这种情况且需要一种不清除标题的解决方案的人,以下是适合我的一种衬板: ActiveSheet.Range("A3:A" & Range("A3").End(xlDown).Row).ClearContents 从第三行开始-更改您的喜好。 回答3 正如Gary的学生提到的那样,您需要删除Cells之前的点以使代码按您最初编写的方式工作。 我不确定,因为您只包含了一行代码,但是删除点时遇到的错误可能与您定义变量的方式有关。 我用定义为整数的变量运行您的代码行
  • Excel告诉我我的空白单元格不是空白(Excel telling me my blank cells aren't blank)
    问题 因此,在excel中,我尝试使用F5查找空白单元格,然后按Ctrl +-删除它们,然后向上移动单元格,以消除其中包含信息的单元格之间的空白单元格。 但是当我尝试这样做时,它告诉我“没有找到单元格”。 我注意到,如果我选择“空白”单元格,Excel仍会对其进行计数: 这很奇怪。 但是,如果我在这些选定的单元格上按Delete键,则计数消失,然后我可以向上按F5,空格,Ctrl +-和Shift单元格,它可以工作... 所以我的问题是我怎么仍然可以这样做,但是有了Excel认为不是空白的这些空白单元格? 我已经尝试过,只是在空白单元格上按Delete键,但是我有很多数据,并且意识到这将花费我很长时间。 我需要找到一种在数据选择中选择这些“空白”单元格的方法。 在此先感谢您的帮助! :) 回答1 启示:一些空白单元格实际上不是空白! 我将显示单元格可以包含空格,换行符和真正的空: 要快速找到这些单元格,您可以做一些事情。 =CODE(A1)公式将返回#VALUE! 如果单元格确实为空,则将返回一个数字。 该数字是=CHAR(32)使用的ASCII数字。 如果选择该单元格,然后单击编辑栏中的,然后使用光标将其全选。 删除这些: 如果单元格中只有一个空格,则可以使用以下命令轻松将其删除: 按ctrl + h打开查找和替换。 在“查找内容”中输入一个空格,将其替换为空