我可以将 Excel 的自动填充与自定义模式一起使用吗?

Posted

技术标签:

【中文标题】我可以将 Excel 的自动填充与自定义模式一起使用吗?【英文标题】:Can I use Excel's autofill with a custom pattern? 【发布时间】:2018-10-12 22:13:58 【问题描述】:

我正在尝试自动填充以下行;

Row A1
Row A1
Row A2
Row A2
...
Row A12
Row A12
Row B1
Row B1
Row B2
Row B2
....

从 A-P,1-12

如何快速自动填充? 目前,向下拖动只是重复模式而不是提升模式。

提前致谢。

通常在编程中,我会循环 A-P 并在其中嵌套一个 1-12 循环。但是,在 excel 中我不太确定。

【问题讨论】:

只是为了说明您的结果应该是什么样子,请添加结果模式的屏幕截图。 【参考方案1】:

将 INDEX 与一些数学结合使用:

=INDEX($A$1:$P$12,MOD(ROW(1:1)-1,12)+1,INT((ROW(1:1)-1)/12)+1)


编辑,我误会了:

=CHAR(INT((ROW(1:1)-1)/12)+65)&MOD(ROW(1:1)-1,12)+1

将在您向下拖动时用您的图案填充该列。

【讨论】:

嘿伙计,这不是我真正打算做的。我正在寻找使用自动填充生成数据。轻松创建 A1,A1,A2,A2.... 等等。反对手动输入数据。 数据只是为了表明它正在抓取正确的单元格。该公式以您想要的模式返回这些单元格中的值。【参考方案2】:
    Sub DAdwadw()

Dim i As Integer
Dim arr(0 To 16) As String
Dim count As Integer


arr(1) = "A"
arr(2) = "B"
arr(3) = "C"
arr(4) = "D"
arr(5) = "E"
arr(6) = "F"
arr(7) = "G"
arr(8) = "H"
arr(9) = "I"
arr(10) = "J"
arr(11) = "K"
arr(12) = "L"
arr(13) = "M"
arr(14) = "N"
arr(15) = "O"
arr(16) = "P"
arr(17) = "Q"
arr(18) = "R"
arr(19) = "S"
arr(20) = "T"
arr(21) = "U"
arr(22) = "V"
arr(23) = "W"
arr(24) = "X"
arr(25) = "Y"
arr(26) = "Z"

count = 1

For i = 1 To 8
    Dim letter As String

    For p = 1 To 58

        letter = arr(i) & p

        Cells(count, 1).Value = letter
        Cells(count + 1, 1).Value = letter

        count = count + 2
    Next p

Next i

End Sub

这就是我最终的做法。

【讨论】:

不知道为什么你有所有的字母。 arr(17) = "Q" 和后续字母会引发“下标超出范围”错误。除非您在声明 arr 时指的是 26 而不是 16【参考方案3】:

如果您不反对在 B 中有一个可以自动填充的辅助列,您可以从 A1 开始一直复制它,然后将这些值复制并特殊粘贴回去。只要确保自动填充从 0 开始到您想要的任意数量的单元格

=SUBSTITUTE(ADDRESS(1,CEILING((B1+0.01)/12,1),4),"1","") & MOD(B1,12)+1

编辑

抱歉耽搁了,但我找了一些时间用 VBA 重写它,这样它就不再需要辅助列了。

Sub Filler()
    Dim i As Long

    For i = 0 To 191
        With ThisWorkbook.Worksheets(1)
            .Cells(i + 1, 1) = Split(.Cells(1, Int((i + 0.01) / 12) + 1).Address, "$")(1) & i Mod 12 + 1
        End With
    Next i

End Sub

【讨论】:

宏不是要走的路吗? 糟糕,我以为您想在工作表中使用向下拖动。我稍后会尝试更新我的答案。【参考方案4】:

我认为您正在寻找类似的东西:

Option Explicit

Public Sub TestGeneratePattern()
    GeneratePattern Rows:=12, Columns:=16
End Sub

Public Sub GeneratePattern(Rows As Long, Columns As Long)
    Dim strRow As String
    Dim strCol As String

    Dim iRow As Long
    For iRow = 1 To Rows * Columns
        strRow = iRow - ((iRow - 1) \ Rows) * Rows 'count rows from 1 to 12 
        strCol = Cells(1, ((iRow - 1) \ Rows) + 1).Address(True, False) 'increase column every 12 rows
        strCol = Left(strCol, InStr(1, strCol, "$") - 1) 'get column letter

        Cells(iRow * 2 - 1, "A").Resize(RowSize:=2).Value = strCol & strRow 'write value in 2 cells at once
    Next iRow
End Sub

【讨论】:

以上是关于我可以将 Excel 的自动填充与自定义模式一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 C++ 中的 for each 循环函数与自定义类一起使用

Excel自定义颜色美化单元格颜色配置技巧与自定义颜色主题

将 SharedElement Activity 转换与自定义视图一起使用

如何将 Django 的内置身份验证与自定义表单(html 模板)一起使用

如何将 Qt 属性与自定义类一起使用?

将 Firebase 身份验证与自定义提供程序一起使用