鱼C论坛

 找回密码
 立即注册
查看: 105|回复: 17

[已解决]Excel数据筛选求助~~

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现有一123.xls表格,其中第B列为户主,现有需求:

   1.在代码中临时关闭Excel的警告提示,代码执行完再打开警告提示;
   
   2.把同一户主的行纵向合并单元格并居中(比如说某一户有3人,就户主B列的3行并为一个单元格并居中);

   3.合并完后把表格顺序按原来顺序展示(比如说原来的“张三”是第二家户主(不一定是第2行),合并后”新序“列中行号为2,原来的“李四”是第99家户主(不一定是第99行),合并后”新序“列中行号为99);

   4.合并完后加上统计功能,看一共有多少位户主?
最佳答案
3 天前
凊风 发表于 2025-09-11 14:17
FishC 发表于 2025-9-11 14:13
非常抱歉,我理解错了 ...


您说得对,将"新序号"列插入到最左侧确实更容易实现。以下是修改后的VBA代码:

Sub MergeHouseholdHeads()
    Application.DisplayAlerts = False ' 关闭Excel警告提示
    Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
   
    Dim ws As Worksheet
    Set ws = ActiveSheet
   
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
   
    ' 在A列插入新列(原A列及之后的所有列右移)
    ws.Columns("A:A").Insert Shift:=xlToRight
    ws.Cells(1, 1).Value = "新序" ' 设置新列标题
   
    ' 记录户主顺序和数量
    Dim householdCount As Long
    householdCount = 0
    Dim householdOrder As Object
    Set householdOrder = CreateObject("Scripting.Dictionary")
   
    ' 第一遍遍历:确定户主顺序并填充新序列
    Dim i As Long
    For i = 2 To lastRow
        ' 注意:现在B列变成了C列(因为插入了新列A)
        Dim currentHead As String
        currentHead = ws.Cells(i, 3).Value ' C列是原来的B列(户主列)
        
        If Not householdOrder.Exists(currentHead) Then
            householdCount = householdCount + 1
            householdOrder.Add currentHead, householdCount
        End If
        
        ' 设置新序值(插入到A列)
        ws.Cells(i, 1).Value = householdOrder(currentHead)
    Next i
   
    ' 第二遍遍历:合并户主列单元格(现在是C列)
    Dim startMergeRow As Long
    startMergeRow = 2
    Dim currentOwner As String
    currentOwner = ws.Cells(startMergeRow, 3).Value ' C列是户主列
   
    For i = 3 To lastRow + 1
        ' 检查是否到达最后一行或户主发生变化
        If i > lastRow Or ws.Cells(i, 3).Value <> currentOwner Then
            ' 合并单元格(C列,保留户主姓名)
            If i - 1 > startMergeRow Then
                With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(i - 1, 3))
                    .Merge
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            Else
                ' 单行也设置居中
                ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
                ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
            End If
            
            If i <= lastRow Then
                currentOwner = ws.Cells(i, 3).Value
                startMergeRow = i
            End If
        End If
    Next i
   
    ' 恢复设置
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
    ' 显示户主数量
    MsgBox "共有 " & householdCount & " 位户主。"
End Sub

代码改进说明:
1. 现在会在最左侧(A列)插入"新序"列,原表格所有列向右移动一列
2. 原来的B列(户主列)现在变成了C列
3. 合并操作针对的是C列(原来的B列)
4. 新序号添加在A列,不会影响原有的户主姓名

运行后效果:
- A列:新增的"新序"列,显示每户的顺序编号
- B列:原来的A列数据
- C列:原来的B列(户主列),相同户主的单元格已合并并居中
- 其他列:依次向右移动一列
- 最后弹出消息框显示户主总数

这样实现确实更加清晰,不容易出错。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层    本楼为最佳答案   
凊风 发表于 2025-09-11 14:17
FishC 发表于 2025-9-11 14:13
非常抱歉,我理解错了 ...


您说得对,将"新序号"列插入到最左侧确实更容易实现。以下是修改后的VBA代码:

Sub MergeHouseholdHeads()
    Application.DisplayAlerts = False ' 关闭Excel警告提示
    Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
   
    Dim ws As Worksheet
    Set ws = ActiveSheet
   
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
   
    ' 在A列插入新列(原A列及之后的所有列右移)
    ws.Columns("A:A").Insert Shift:=xlToRight
    ws.Cells(1, 1).Value = "新序" ' 设置新列标题
   
    ' 记录户主顺序和数量
    Dim householdCount As Long
    householdCount = 0
    Dim householdOrder As Object
    Set householdOrder = CreateObject("Scripting.Dictionary")
   
    ' 第一遍遍历:确定户主顺序并填充新序列
    Dim i As Long
    For i = 2 To lastRow
        ' 注意:现在B列变成了C列(因为插入了新列A)
        Dim currentHead As String
        currentHead = ws.Cells(i, 3).Value ' C列是原来的B列(户主列)
        
        If Not householdOrder.Exists(currentHead) Then
            householdCount = householdCount + 1
            householdOrder.Add currentHead, householdCount
        End If
        
        ' 设置新序值(插入到A列)
        ws.Cells(i, 1).Value = householdOrder(currentHead)
    Next i
   
    ' 第二遍遍历:合并户主列单元格(现在是C列)
    Dim startMergeRow As Long
    startMergeRow = 2
    Dim currentOwner As String
    currentOwner = ws.Cells(startMergeRow, 3).Value ' C列是户主列
   
    For i = 3 To lastRow + 1
        ' 检查是否到达最后一行或户主发生变化
        If i > lastRow Or ws.Cells(i, 3).Value <> currentOwner Then
            ' 合并单元格(C列,保留户主姓名)
            If i - 1 > startMergeRow Then
                With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(i - 1, 3))
                    .Merge
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            Else
                ' 单行也设置居中
                ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
                ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
            End If
            
            If i <= lastRow Then
                currentOwner = ws.Cells(i, 3).Value
                startMergeRow = i
            End If
        End If
    Next i
   
    ' 恢复设置
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
    ' 显示户主数量
    MsgBox "共有 " & householdCount & " 位户主。"
End Sub

代码改进说明:
1. 现在会在最左侧(A列)插入"新序"列,原表格所有列向右移动一列
2. 原来的B列(户主列)现在变成了C列
3. 合并操作针对的是C列(原来的B列)
4. 新序号添加在A列,不会影响原有的户主姓名

运行后效果:
- A列:新增的"新序"列,显示每户的顺序编号
- B列:原来的A列数据
- C列:原来的B列(户主列),相同户主的单元格已合并并居中
- 其他列:依次向右移动一列
- 最后弹出消息框显示户主总数

这样实现确实更加清晰,不容易出错。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:22
FishC 发表于 2025-9-11 14:18
您说得对,将"新序号" ...


您说得对,我需要修正代码,确保"新序号"列中相同的序号也会被合并并居中。以下是修正后的完整代码:

  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 在A列插入新列(原A列及之后的所有列右移)
  12.     ws.Columns("A:A").Insert Shift:=xlToRight
  13.     ws.Cells(1, 1).Value = "新序" ' 设置新列标题
  14.    
  15.     ' 记录户主顺序和数量
  16.     Dim householdCount As Long
  17.     householdCount = 0
  18.     Dim householdOrder As Object
  19.     Set householdOrder = CreateObject("Scripting.Dictionary")
  20.    
  21.     ' 第一遍遍历:确定户主顺序并填充新序列
  22.     Dim i As Long
  23.     For i = 2 To lastRow
  24.         ' 注意:现在B列变成了C列(因为插入了新列A)
  25.         Dim currentHead As String
  26.         currentHead = ws.Cells(i, 3).Value ' C列是原来的B列(户主列)
  27.         
  28.         If Not householdOrder.Exists(currentHead) Then
  29.             householdCount = householdCount + 1
  30.             householdOrder.Add currentHead, householdCount
  31.         End If
  32.         
  33.         ' 设置新序值(插入到A列)
  34.         ws.Cells(i, 1).Value = householdOrder(currentHead)
  35.     Next i
  36.    
  37.     ' 第二遍遍历:合并户主列单元格(现在是C列)和新序列单元格(A列)
  38.     Dim startMergeRow As Long
  39.     startMergeRow = 2
  40.     Dim currentOwner As String
  41.     currentOwner = ws.Cells(startMergeRow, 3).Value ' C列是户主列
  42.    
  43.     For i = 3 To lastRow + 1
  44.         ' 检查是否到达最后一行或户主发生变化
  45.         If i > lastRow Or ws.Cells(i, 3).Value <> currentOwner Then
  46.             ' 合并A列(新序列)单元格
  47.             If i - 1 > startMergeRow Then
  48.                 With ws.Range(ws.Cells(startMergeRow, 1), ws.Cells(i - 1, 1))
  49.                     .Merge
  50.                     .HorizontalAlignment = xlCenter
  51.                     .VerticalAlignment = xlCenter
  52.                 End With
  53.             Else
  54.                 ' 单行也设置居中
  55.                 ws.Cells(startMergeRow, 1).HorizontalAlignment = xlCenter
  56.                 ws.Cells(startMergeRow, 1).VerticalAlignment = xlCenter
  57.             End If
  58.             
  59.             ' 合并C列(户主列)单元格
  60.             If i - 1 > startMergeRow Then
  61.                 With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(i - 1, 3))
  62.                     .Merge
  63.                     .HorizontalAlignment = xlCenter
  64.                     .VerticalAlignment = xlCenter
  65.                 End With
  66.             Else
  67.                 ' 单行也设置居中
  68.                 ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
  69.                 ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
  70.             End If
  71.             
  72.             If i <= lastRow Then
  73.                 currentOwner = ws.Cells(i, 3).Value
  74.             End If
  75.             startMergeRow = i
  76.         End If
  77.     Next i
  78.    
  79.     ' 恢复设置
  80.     Application.DisplayAlerts = True
  81.     Application.ScreenUpdating = True
  82.    
  83.     ' 显示户主数量
  84.     MsgBox "共有 " & householdCount & " 位户主。"
  85. End Sub
复制代码


代码改进说明:
1. 现在代码会同时合并A列(新序列)和C列(户主列)的单元格
2. 相同的新序号会被合并为一个单元格并居中显示
3. 相同的户主姓名也会被合并为一个单元格并居中显示
4. 保持了原有的功能:添加新序列列、统计户主数量

使用方法:
1. 按Alt+F11打开VBA编辑器
2. 插入新模块并粘贴上述代码
3. 返回Excel,按Alt+F8,选择"MergeHouseholdHeads"并运行

运行后,您将看到:
- A列添加了"新序"列,相同序号的单元格已合并并居中
- C列(原来的B列)的户主姓名保持不变,相同户主的单元格已合并并居中
- 表格其他列保持不变
- 最后会弹出消息框显示户主总数

这样应该能解决您提到的新序号列相同值没有合并的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 3 天前 | 显示全部楼层
以下是解决您问题的Python代码方案。代码使用xlrd和xlwt库处理Excel .xls文件,实现数据筛选、合并单元格、添加新序列列和统计户主数量。代码中已临时关闭Python警告提示,执行完毕后恢复。


  1. import xlrd
  2. import xlwt
  3. import warnings

  4. # 临时关闭所有警告提示
  5. with warnings.catch_warnings():
  6.     warnings.simplefilter("ignore")
  7.    
  8.     # 读取Excel文件
  9.     rb = xlrd.open_workbook('123.xls')
  10.     sheet = rb.sheet_by_index(0)
  11.     nrows = sheet.nrows
  12.     ncols = sheet.ncols
  13.    
  14.     # 获取B列(户主列)所有值,索引为1(0-based)
  15.     b_values = [sheet.cell_value(row, 1) for row in range(nrows)]
  16.    
  17.     # 计算新序列值:基于户主首次出现的顺序
  18.     unique_owners = []
  19.     owner_map = {}
  20.     index = 0
  21.     new_seq_values = []
  22.     for value in b_values:
  23.         if value not in owner_map:
  24.             owner_map[value] = index
  25.             unique_owners.append(value)
  26.             index += 1
  27.         new_seq = owner_map[value] + 1  # 序号从1开始
  28.         new_seq_values.append(new_seq)
  29.    
  30.     num_owners = len(unique_owners)  # 户主总数
  31.    
  32.     # 创建新工作簿和工作表
  33.     wb = xlwt.Workbook()
  34.     ws = wb.add_sheet('Sheet1')
  35.    
  36.     # 定义居中样式
  37.     style = xlwt.XFStyle()
  38.     alignment = xlwt.Alignment()
  39.     alignment.horz = xlwt.Alignment.HORZ_CENTER
  40.     alignment.vert = xlwt.Alignment.VERT_CENTER
  41.     style.alignment = alignment
  42.    
  43.     # 写入所有原始数据和新序列列(新序列列添加在最后)
  44.     for row in range(nrows):
  45.         for col in range(ncols):
  46.             value = sheet.cell_value(row, col)
  47.             ws.write(row, col, value)
  48.         ws.write(row, ncols, new_seq_values[row])  # 写入新序列值
  49.    
  50.     # 合并B列单元格:同一户主的行纵向合并并居中
  51.     current_owner = b_values[0]
  52.     start_row = 0
  53.     for row in range(1, nrows):
  54.         if b_values[row] != current_owner:
  55.             # 合并当前组(从start_row到row-1)
  56.             if row - 1 > start_row:
  57.                 ws.merge(start_row, row-1, 1, 1)  # 合并B列(索引1)
  58.             # 设置合并单元格的样式为居中
  59.             ws.write(start_row, 1, b_values[start_row], style)
  60.             start_row = row
  61.             current_owner = b_values[row]
  62.    
  63.     # 处理最后一组
  64.     if nrows - 1 > start_row:
  65.         ws.merge(start_row, nrows-1, 1, 1)
  66.         ws.write(start_row, 1, b_values[start_row], style)
  67.     else:
  68.         ws.write(start_row, 1, b_values[start_row], style)  # 单行也设置居中
  69.    
  70.     # 保存为新文件
  71.     wb.save('123_merged.xls')

  72. # 警告提示已自动恢复
  73. print(f"共有{num_owners}位户主。")
复制代码


代码说明:
- 使用 warnings.catch_warnings() 临时关闭警告,执行完毕后自动恢复。
- 读取原始数据,计算新序列列(基于户主首次出现顺序)。
- 合并B列同一户主的单元格并设置居中样式。
- 新序列列添加到表格最后,所有行都保留值。
- 输出户主总数。

运行代码后,将生成新文件 123_merged.xls,其中包含合并后的单元格和新序列列。户主总数会在控制台打印。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 13:57
以下是解决您问题的Python代码方案。代码使用xlrd和xlwt库处理Excel .xls文件,实现数据筛选、合并单元格、 ...

只能用EXCEL宏来实现。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:01
FishC 发表于 2025-9-11 13:57
以下是解决您问题的Py ...


以下是使用Excel VBA宏实现的解决方案,满足您的所有需求:


  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 添加"新序"列
  12.     Dim newSeqCol As Long
  13.     newSeqCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column + 1
  14.     ws.Cells(1, newSeqCol).Value = "新序"
  15.    
  16.     ' 记录户主顺序和数量
  17.     Dim householdCount As Long
  18.     householdCount = 0
  19.     Dim householdOrder As Object
  20.     Set householdOrder = CreateObject("Scripting.Dictionary")
  21.    
  22.     ' 第一遍遍历:确定户主顺序
  23.     Dim i As Long
  24.     For i = 2 To lastRow
  25.         Dim currentHead As String
  26.         currentHead = ws.Cells(i, 2).Value
  27.         
  28.         If Not householdOrder.Exists(currentHead) Then
  29.             householdCount = householdCount + 1
  30.             householdOrder.Add currentHead, householdCount
  31.         End If
  32.         
  33.         ' 设置新序值
  34.         ws.Cells(i, newSeqCol).Value = householdOrder(currentHead)
  35.     Next i
  36.    
  37.     ' 第二遍遍历:合并单元格
  38.     Dim startMergeRow As Long
  39.     startMergeRow = 2
  40.    
  41.     For i = 2 To lastRow + 1 ' 加1以确保处理最后一行
  42.         If i > lastRow Or ws.Cells(i, 2).Value <> ws.Cells(startMergeRow, 2).Value Then
  43.             ' 合并单元格
  44.             If i - 1 > startMergeRow Then
  45.                 With ws.Range(ws.Cells(startMergeRow, 2), ws.Cells(i - 1, 2))
  46.                     .Merge
  47.                     .HorizontalAlignment = xlCenter
  48.                     .VerticalAlignment = xlCenter
  49.                 End With
  50.             Else
  51.                 ' 单行也设置居中
  52.                 ws.Cells(startMergeRow, 2).HorizontalAlignment = xlCenter
  53.                 ws.Cells(startMergeRow, 2).VerticalAlignment = xlCenter
  54.             End If
  55.             
  56.             startMergeRow = i
  57.         End If
  58.     Next i
  59.    
  60.     ' 恢复设置
  61.     Application.DisplayAlerts = True
  62.     Application.ScreenUpdating = True
  63.    
  64.     ' 显示户主数量
  65.     MsgBox "共有 " & householdCount & " 位户主。"
  66. End Sub
复制代码


使用说明:
1. 按Alt+F11打开VBA编辑器
2. 插入新模块并粘贴上述代码
3. 返回Excel,按Alt+F8,选择"MergeHouseholdHeads"并运行

代码功能:
1. 临时关闭Excel警告提示,执行完毕后恢复
2. 合并同一户主的B列单元格并居中
3. 添加"新序"列,按户主首次出现顺序编号
4. 统计并显示户主总数

注意事项:
- 确保您的Excel已启用宏
- 代码假设数据从第2行开始(第1行为标题行)
- 运行前建议备份原始文件

运行后,您将看到B列中同一户主的单元格已合并并居中,新增的"新序"列显示了每户的顺序编号,最后会弹出消息框显示户主总数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:03
以下是使用Excel VBA宏实现的解决方案,满足您的所有需求:

第B列户主姓名被新列号替换了。。。
建议新增加一列来放新列号。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:07
FishC 发表于 2025-9-11 14:03
以下是使用Excel VBA ...


您说得对,我理解错了需求。新序列应该作为新列添加,而不是替换B列的户主姓名。以下是修正后的VBA代码:

Sub MergeHouseholdHeads()
    Application.DisplayAlerts = False ' 关闭Excel警告提示
    Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
   
    Dim ws As Worksheet
    Set ws = ActiveSheet
   
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
   
    ' 确定最后一列的位置
    Dim lastCol As Long
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
   
    ' 添加"新序"列(在原数据最后一列后面)
    Dim newSeqCol As Long
    newSeqCol = lastCol + 1
    ws.Cells(1, newSeqCol).Value = "新序"
   
    ' 记录户主顺序和数量
    Dim householdCount As Long
    householdCount = 0
    Dim householdOrder As Object
    Set householdOrder = CreateObject("Scripting.Dictionary")
   
    ' 第一遍遍历:确定户主顺序并填充新序列
    Dim i As Long
    For i = 2 To lastRow
        Dim currentHead As String
        currentHead = ws.Cells(i, 2).Value
        
        If Not householdOrder.Exists(currentHead) Then
            householdCount = householdCount + 1
            householdOrder.Add currentHead, householdCount
        End If
        
        ' 设置新序值(保留B列的户主姓名)
        ws.Cells(i, newSeqCol).Value = householdOrder(currentHead)
    Next i
   
    ' 第二遍遍历:合并B列单元格(保留户主姓名)
    Dim startMergeRow As Long
    startMergeRow = 2
   
    For i = 3 To lastRow + 1 ' 从第3行开始比较
        If i > lastRow Or ws.Cells(i, 2).Value <> ws.Cells(startMergeRow, 2).Value Then
            ' 合并单元格(仅合并B列,保留户主姓名)
            If i - 1 > startMergeRow Then
                With ws.Range(ws.Cells(startMergeRow, 2), ws.Cells(i - 1, 2))
                    .Merge
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            Else
                ' 单行也设置居中
                ws.Cells(startMergeRow, 2).HorizontalAlignment = xlCenter
                ws.Cells(startMergeRow, 2).VerticalAlignment = xlCenter
            End If
            
            startMergeRow = i
        End If
    Next i
   
    ' 恢复设置
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   
    ' 显示户主数量
    MsgBox "共有 " & householdCount & " 位户主。"
End Sub

代码改进说明:
1. 现在代码会在原数据最后一列后面添加"新序"列,不会覆盖B列的户主姓名
2. B列的户主姓名会被保留,只进行合并和居中操作
3. 新序列会显示在新增的列中,按照户主首次出现的顺序编号

使用方法不变:
1. 按Alt+F11打开VBA编辑器
2. 插入新模块并粘贴上述代码
3. 返回Excel,按Alt+F8,选择"MergeHouseholdHeads"并运行

运行后,您将看到:
- B列的户主姓名保持不变,相同户主的单元格已合并并居中
- 表格最右侧新增了"新序"列,显示了每户的顺序编号
- 最后会弹出消息框显示户主总数

这样既保留了原始户主数据,又添加了新的序号列,满足了您的所有需求。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:08
您说得对,我理解错了需求。新序列应该作为新列添加,而不是替换B列的户主姓名。以下是修正后的VBA代码 ...

执行结果没变。
第B列户主姓名被新列号替换了。。。
表格最右边也没增加新列。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:12
FishC 发表于 2025-9-11 14:08
您说得对,我理解错了 ...


非常抱歉,我理解错了您的问题。看起来代码确实有错误,导致B列的内容被覆盖了。让我重新提供一个正确的VBA代码:

  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 确定最后一列的位置
  12.     Dim lastCol As Long
  13.     lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
  14.    
  15.     ' 添加"新序"列(在原数据最后一列后面)
  16.     Dim newSeqCol As Long
  17.     newSeqCol = lastCol + 1
  18.     ws.Cells(1, newSeqCol).Value = "新序"
  19.    
  20.     ' 记录户主顺序和数量
  21.     Dim householdCount As Long
  22.     householdCount = 0
  23.     Dim householdOrder As Object
  24.     Set householdOrder = CreateObject("Scripting.Dictionary")
  25.    
  26.     ' 第一遍遍历:确定户主顺序并填充新序列
  27.     Dim i As Long
  28.     For i = 2 To lastRow
  29.         Dim currentHead As String
  30.         currentHead = ws.Cells(i, 2).Value
  31.         
  32.         If Not householdOrder.Exists(currentHead) Then
  33.             householdCount = householdCount + 1
  34.             householdOrder.Add currentHead, householdCount
  35.         End If
  36.         
  37.         ' 设置新序值(保留B列的户主姓名)
  38.         ws.Cells(i, newSeqCol).Value = householdOrder(currentHead)
  39.     Next i
  40.    
  41.     ' 第二遍遍历:合并B列单元格(保留户主姓名)
  42.     Dim startMergeRow As Long
  43.     startMergeRow = 2
  44.     Dim currentOwner As String
  45.     currentOwner = ws.Cells(startMergeRow, 2).Value
  46.    
  47.     For i = 3 To lastRow + 1
  48.         ' 检查是否到达最后一行或户主发生变化
  49.         If i > lastRow Or ws.Cells(i, 2).Value <> currentOwner Then
  50.             ' 合并单元格(仅合并B列,保留户主姓名)
  51.             If i - 1 > startMergeRow Then
  52.                 With ws.Range(ws.Cells(startMergeRow, 2), ws.Cells(i - 1, 2))
  53.                     .Merge
  54.                     .HorizontalAlignment = xlCenter
  55.                     .VerticalAlignment = xlCenter
  56.                 End With
  57.             Else
  58.                 ' 单行也设置居中
  59.                 ws.Cells(startMergeRow, 2).HorizontalAlignment = xlCenter
  60.                 ws.Cells(startMergeRow, 2).VerticalAlignment = xlCenter
  61.             End If
  62.             
  63.             If i <= lastRow Then
  64.                 startMergeRow = i
  65.                 currentOwner = ws.Cells(i, 2).Value
  66.             End If
  67.         End If
  68.     Next i
  69.    
  70.     ' 恢复设置
  71.     Application.DisplayAlerts = True
  72.     Application.ScreenUpdating = True
  73.    
  74.     ' 显示户主数量
  75.     MsgBox "共有 " & householdCount & " 位户主。"
  76. End Sub
复制代码


这个修正后的代码应该能够:
1. 正确添加"新序"列到表格最右侧
2. 保留B列的户主姓名不被覆盖
3. 合并同一户主的B列单元格并居中
4. 在新列中显示每户的顺序编号
5. 统计并显示户主总数

如果仍然有问题,请尝试以下步骤:
1. 关闭所有Excel文件
2. 重新打开您的123.xls文件
3. 按Alt+F11打开VBA编辑器
4. 插入新模块并粘贴上面的代码
5. 返回Excel,按Alt+F8,选择"MergeHouseholdHeads"并运行

如果问题仍然存在,可能是您的Excel设置或文件格式有问题。您可以尝试将文件另存为.xlsm格式(启用宏的工作簿),然后重新运行宏。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:13
非常抱歉,我理解错了您的问题。看起来代码确实有错误,导致B列的内容被覆盖了。让我重新提供一个正确 ...

我们能不能把”新序号“列插入表格最左侧(原表格所有列右移1列)?  可能这样好实现一些。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:18
您说得对,将"新序号"列插入到最左侧确实更容易实现。以下是修改后的VBA代码:

Sub MergeHouseholdH ...


”新序号“列相同的行号没有合并单元格并居中(比如说有两个2、三个6)。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:24
您说得对,我需要修正代码,确保"新序号"列中相同的序号也会被合并并居中。以下是修正后的完整代码:
...

原始表格中B列相同,但D列和E列不相同的户主不应该相同行号(比如说不同地方的同名同姓户主)。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:31
FishC 发表于 2025-9-11 14:24
您说得对,我需要修正 ...


您提出了一个非常重要的点。确实,如果不同地方的户主姓名相同,它们应该被视为不同的户主。以下是修正后的代码,现在会根据B列(户主姓名)、D列和E列的内容来判断是否为同一户主:

  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 在A列插入新列(原A列及之后的所有列右移)
  12.     ws.Columns("A:A").Insert Shift:=xlToRight
  13.     ws.Cells(1, 1).Value = "新序" ' 设置新列标题
  14.    
  15.     ' 记录户主顺序和数量
  16.     Dim householdCount As Long
  17.     householdCount = 0
  18.     Dim householdOrder As Object
  19.     Set householdOrder = CreateObject("Scripting.Dictionary")
  20.    
  21.     ' 第一遍遍历:确定户主顺序并填充新序列
  22.     ' 使用户主姓名、D列和E列的组合作为唯一标识
  23.     Dim i As Long
  24.     For i = 2 To lastRow
  25.         ' 创建唯一标识:户主姓名 + D列内容 + E列内容
  26.         Dim uniqueKey As String
  27.         uniqueKey = ws.Cells(i, 3).Value & "|" & ws.Cells(i, 4).Value & "|" & ws.Cells(i, 5).Value
  28.         
  29.         If Not householdOrder.Exists(uniqueKey) Then
  30.             householdCount = householdCount + 1
  31.             householdOrder.Add uniqueKey, householdCount
  32.         End If
  33.         
  34.         ' 设置新序值(插入到A列)
  35.         ws.Cells(i, 1).Value = householdOrder(uniqueKey)
  36.     Next i
  37.    
  38.     ' 第二遍遍历:合并A列(新序列)和C列(户主姓名)的单元格
  39.     Dim startMergeRow As Long
  40.     startMergeRow = 2
  41.    
  42.     For i = 3 To lastRow + 1
  43.         ' 检查是否到达最后一行或户主信息发生变化
  44.         ' 使用户主姓名、D列和E列的组合作为判断条件
  45.         If i > lastRow Then
  46.             ' 处理最后一行
  47.             Exit For
  48.         End If
  49.         
  50.         Dim currentKey As String
  51.         Dim nextKey As String
  52.         
  53.         currentKey = ws.Cells(startMergeRow, 3).Value & "|" & ws.Cells(startMergeRow, 4).Value & "|" & ws.Cells(startMergeRow, 5).Value
  54.         nextKey = ws.Cells(i, 3).Value & "|" & ws.Cells(i, 4).Value & "|" & ws.Cells(i, 5).Value
  55.         
  56.         If nextKey <> currentKey Then
  57.             ' 合并A列(新序列)单元格
  58.             If i - 1 > startMergeRow Then
  59.                 With ws.Range(ws.Cells(startMergeRow, 1), ws.Cells(i - 1, 1))
  60.                     .Merge
  61.                     .HorizontalAlignment = xlCenter
  62.                     .VerticalAlignment = xlCenter
  63.                 End With
  64.             Else
  65.                 ' 单行也设置居中
  66.                 ws.Cells(startMergeRow, 1).HorizontalAlignment = xlCenter
  67.                 ws.Cells(startMergeRow, 1).VerticalAlignment = xlCenter
  68.             End If
  69.             
  70.             ' 合并C列(户主姓名)单元格
  71.             If i - 1 > startMergeRow Then
  72.                 With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(i - 1, 3))
  73.                     .Merge
  74.                     .HorizontalAlignment = xlCenter
  75.                     .VerticalAlignment = xlCenter
  76.                 End With
  77.             Else
  78.                 ' 单行也设置居中
  79.                 ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
  80.                 ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
  81.             End If
  82.             
  83.             startMergeRow = i
  84.         End If
  85.     Next i
  86.    
  87.     ' 处理最后一批数据
  88.     If lastRow >= startMergeRow Then
  89.         ' 合并A列(新序列)单元格
  90.         If lastRow > startMergeRow Then
  91.             With ws.Range(ws.Cells(startMergeRow, 1), ws.Cells(lastRow, 1))
  92.                 .Merge
  93.                 .HorizontalAlignment = xlCenter
  94.                 .VerticalAlignment = xlCenter
  95.             End With
  96.         Else
  97.             ' 单行也设置居中
  98.             ws.Cells(startMergeRow, 1).HorizontalAlignment = xlCenter
  99.             ws.Cells(startMergeRow, 1).VerticalAlignment = xlCenter
  100.         End If
  101.         
  102.         ' 合并C列(户主姓名)单元格
  103.         If lastRow > startMergeRow Then
  104.             With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(lastRow, 3))
  105.                 .Merge
  106.                 .HorizontalAlignment = xlCenter
  107.                 .VerticalAlignment = xlCenter
  108.             End With
  109.         Else
  110.             ' 单行也设置居中
  111.             ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
  112.             ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
  113.         End If
  114.     End If
  115.    
  116.     ' 恢复设置
  117.     Application.DisplayAlerts = True
  118.     Application.ScreenUpdating = True
  119.    
  120.     ' 显示户主数量
  121.     MsgBox "共有 " & householdCount & " 位户主。"
  122. End Sub
复制代码


代码改进说明:
1. 现在使用户主姓名(B列,插入新列后变为C列)、D列和E列的组合作为判断是否为同一户主的依据
2. 只有当这三列内容完全相同时,才会被视为同一户主并分配相同的新序号
3. 只有真正属于同一户主的行才会被合并单元格

这样处理可以确保:
- 不同地方的同名户主会被分配不同的序号
- 只有真正属于同一户主的行才会被合并
- 新序号列和户主姓名列都会正确合并并居中显示

请使用这个修正后的代码,它应该能够正确处理您提到的情况。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:32
您提出了一个非常重要的点。确实,如果不同地方的户主姓名相同,它们应该被视为不同的户主。以下是修正 ...

这一次户主列(新C列)中,相同户主没有居中合并单元格。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:40
FishC 发表于 2025-9-11 14:32
您提出了一个非常重要 ...


您说得对,我需要修正代码以确保户主列(新C列)中的相同户主也会被正确合并并居中。以下是修正后的完整代码:

  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 在A列插入新列(原A列及之后的所有列右移)
  12.     ws.Columns("A:A").Insert Shift:=xlToRight
  13.     ws.Cells(1, 1).Value = "新序" ' 设置新列标题
  14.    
  15.     ' 记录户主顺序和数量
  16.     Dim householdCount As Long
  17.     householdCount = 0
  18.     Dim householdOrder As Object
  19.     Set householdOrder = CreateObject("Scripting.Dictionary")
  20.    
  21.     ' 第一遍遍历:确定户主顺序并填充新序列
  22.     ' 使用户主姓名、D列和E列的组合作为唯一标识
  23.     Dim i As Long
  24.     For i = 2 To lastRow
  25.         ' 创建唯一标识:户主姓名 + D列内容 + E列内容
  26.         Dim uniqueKey As String
  27.         uniqueKey = ws.Cells(i, 3).Value & "|" & ws.Cells(i, 4).Value & "|" & ws.Cells(i, 5).Value
  28.         
  29.         If Not householdOrder.Exists(uniqueKey) Then
  30.             householdCount = householdCount + 1
  31.             householdOrder.Add uniqueKey, householdCount
  32.         End If
  33.         
  34.         ' 设置新序值(插入到A列)
  35.         ws.Cells(i, 1).Value = householdOrder(uniqueKey)
  36.     Next i
  37.    
  38.     ' 第二遍遍历:合并A列(新序列)和C列(户主姓名)的单元格
  39.     Dim startMergeRow As Long
  40.     startMergeRow = 2
  41.    
  42.     For i = 3 To lastRow + 1
  43.         ' 检查是否到达最后一行或户主信息发生变化
  44.         Dim shouldMerge As Boolean
  45.         shouldMerge = False
  46.         
  47.         If i > lastRow Then
  48.             shouldMerge = True ' 处理最后一行
  49.         Else
  50.             Dim currentKey As String
  51.             Dim nextKey As String
  52.             
  53.             currentKey = ws.Cells(startMergeRow, 3).Value & "|" & ws.Cells(startMergeRow, 4).Value & "|" & ws.Cells(startMergeRow, 5).Value
  54.             nextKey = ws.Cells(i, 3).Value & "|" & ws.Cells(i, 4).Value & "|" & ws.Cells(i, 5).Value
  55.             
  56.             If nextKey <> currentKey Then
  57.                 shouldMerge = True
  58.             End If
  59.         End If
  60.         
  61.         If shouldMerge Then
  62.             ' 合并A列(新序列)单元格
  63.             If i - 1 > startMergeRow Then
  64.                 With ws.Range(ws.Cells(startMergeRow, 1), ws.Cells(i - 1, 1))
  65.                     .Merge
  66.                     .HorizontalAlignment = xlCenter
  67.                     .VerticalAlignment = xlCenter
  68.                 End With
  69.             Else
  70.                 ' 单行也设置居中
  71.                 ws.Cells(startMergeRow, 1).HorizontalAlignment = xlCenter
  72.                 ws.Cells(startMergeRow, 1).VerticalAlignment = xlCenter
  73.             End If
  74.             
  75.             ' 合并C列(户主姓名)单元格
  76.             If i - 1 > startMergeRow Then
  77.                 With ws.Range(ws.Cells(startMergeRow, 3), ws.Cells(i - 1, 3))
  78.                     .Merge
  79.                     .HorizontalAlignment = xlCenter
  80.                     .VerticalAlignment = xlCenter
  81.                 End With
  82.             Else
  83.                 ' 单行也设置居中
  84.                 ws.Cells(startMergeRow, 3).HorizontalAlignment = xlCenter
  85.                 ws.Cells(startMergeRow, 3).VerticalAlignment = xlCenter
  86.             End If
  87.             
  88.             startMergeRow = i
  89.         End If
  90.     Next i
  91.    
  92.     ' 恢复设置
  93.     Application.DisplayAlerts = True
  94.     Application.ScreenUpdating = True
  95.    
  96.     ' 显示户主数量
  97.     MsgBox "共有 " & householdCount & " 位户主。"
  98. End Sub
复制代码


代码改进说明:
1. 我重新组织了合并逻辑,使其更加清晰和可靠
2. 现在代码会正确地检测户主信息的变化,并在变化时合并前面的单元格
3. 确保A列(新序列)和C列(户主姓名)都会正确合并并居中显示
4. 添加了更明确的逻辑来处理最后一批数据

这个修正后的代码应该能够正确地将同一户主的行在A列和C列中合并单元格并居中显示。请尝试运行这个版本的代码,看看是否解决了您的问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-9-11 14:42
您说得对,我需要修正代码以确保户主列(新C列)中的相同户主也会被正确合并并居中。以下是修正后的完 ...

新A列和新C列中,相同内容都没有合并居中。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
凊风 发表于 2025-09-11 14:45
FishC 发表于 2025-9-11 14:42
您说得对,我需要修正 ...


我理解您的问题了,代码中的合并逻辑可能有问题。让我重新编写一个更简单且可靠的版本,确保A列(新序列)和C列(户主姓名)都能正确合并并居中:

  1. Sub MergeHouseholdHeads()
  2.     Application.DisplayAlerts = False ' 关闭Excel警告提示
  3.     Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
  4.    
  5.     Dim ws As Worksheet
  6.     Set ws = ActiveSheet
  7.    
  8.     Dim lastRow As Long
  9.     lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
  10.    
  11.     ' 在A列插入新列(原A列及之后的所有列右移)
  12.     ws.Columns("A:A").Insert Shift:=xlToRight
  13.     ws.Cells(1, 1).Value = "新序" ' 设置新列标题
  14.    
  15.     ' 记录户主顺序和数量
  16.     Dim householdCount As Long
  17.     householdCount = 0
  18.     Dim householdOrder As Object
  19.     Set householdOrder = CreateObject("Scripting.Dictionary")
  20.    
  21.     ' 第一遍遍历:确定户主顺序并填充新序列
  22.     Dim i As Long
  23.     For i = 2 To lastRow
  24.         ' 创建唯一标识:户主姓名 + D列内容 + E列内容
  25.         Dim uniqueKey As String
  26.         uniqueKey = ws.Cells(i, 3).Value & "|" & ws.Cells(i, 4).Value & "|" & ws.Cells(i, 5).Value
  27.         
  28.         If Not householdOrder.Exists(uniqueKey) Then
  29.             householdCount = householdCount + 1
  30.             householdOrder.Add uniqueKey, householdCount
  31.         End If
  32.         
  33.         ' 设置新序值(插入到A列)
  34.         ws.Cells(i, 1).Value = householdOrder(uniqueKey)
  35.     Next i
  36.    
  37.     ' 第二遍遍历:分别合并A列和C列的相同内容
  38.     MergeSameValues ws, 1, lastRow, 1 ' 合并A列
  39.     MergeSameValues ws, 1, lastRow, 3 ' 合并C列
  40.    
  41.     ' 恢复设置
  42.     Application.DisplayAlerts = True
  43.     Application.ScreenUpdating = True
  44.    
  45.     ' 显示户主数量
  46.     MsgBox "共有 " & householdCount & " 位户主。"
  47. End Sub

  48. ' 辅助函数:合并指定列中相同值的单元格
  49. Sub MergeSameValues(ws As Worksheet, startRow As Long, endRow As Long, col As Long)
  50.     Dim currentValue As Variant
  51.     Dim mergeStart As Long
  52.     Dim i As Long
  53.    
  54.     mergeStart = startRow
  55.     currentValue = ws.Cells(startRow, col).Value
  56.    
  57.     For i = startRow + 1 To endRow + 1
  58.         If i > endRow Or ws.Cells(i, col).Value <> currentValue Then
  59.             ' 合并单元格
  60.             If i - 1 > mergeStart Then
  61.                 With ws.Range(ws.Cells(mergeStart, col), ws.Cells(i - 1, col))
  62.                     .Merge
  63.                     .HorizontalAlignment = xlCenter
  64.                     .VerticalAlignment = xlCenter
  65.                 End With
  66.             Else
  67.                 ' 单行也设置居中
  68.                 ws.Cells(mergeStart, col).HorizontalAlignment = xlCenter
  69.                 ws.Cells(mergeStart, col).VerticalAlignment = xlCenter
  70.             End If
  71.             
  72.             If i <= endRow Then
  73.                 mergeStart = i
  74.                 currentValue = ws.Cells(i, col).Value
  75.             End If
  76.         End If
  77.     Next i
  78. End Sub
复制代码


这个版本的代码做了以下改进:

1. 使用了一个专门的辅助函数 `MergeSameValues` 来处理单元格合并,这个函数更加可靠
2. 分别对A列和C列调用合并函数,确保两列都能正确合并
3. 简化了合并逻辑,只比较当前列的值,而不是多列组合
4. 确保即使只有一行的单元格也会设置居中格式

使用方法:
1. 按Alt+F11打开VBA编辑器
2. 插入新模块并粘贴上述代码
3. 返回Excel,按Alt+F8,选择"MergeHouseholdHeads"并运行

这个版本应该能够正确地将A列(新序列)和C列(户主姓名)中相同内容的单元格合并并居中显示。请尝试运行这个版本的代码。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-14 02:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表