0

好的,让我们看看我是否能让它尽可能容易理解。我正在编写检查工作簿。这本书由许多页组成,每页都有自己的名字。我一直在与一些人合作,以找出标记和复制“BLANKornovalue”单元格的方法,但无法让关键字想法起作用。

这是一个简短的工作表示例。
名称 = 启动设备

`$`Column A = adrress
`$`Column B = Type
`$`Column C = location
`$`Column D = Part#
`$`Column E = (RESULTS)  dropdown choices 

我目前正在查看的唯一列是“E”“结果”结果可以从下拉框中有许多不同的选择,(FAIL,DAMAGED,LOW VOLTS,LOW AMPS,ets)我将其添加为我在最终副本之前得到反馈。当检查员单击下拉框并选择上面列出的单词时,该行将被复制到“FAILED”表上的第一个可用空间。第一个可用空间是 A6(由于标题图形)

然后,如果进行了维修,检查员或服务技术人员将能够将“失败”工作表页面上的“E”列更改为另一个下拉框。It would have choices like (PASS, REPLACED, REPAIRED, etc) When that was selected the same device and column in the "INITIATING DEVICES" would be updated and the item would be removed from the "FAILED" sheet all items would shift up leaving没有空间。如果可能,这应该在选择设备之后发生。

我希望一旦我得到一个工作示例,我将能够调整代码以处理多个工作表,以便不同的值将项目放在不同的工作表上。但这还没有到来。

示例第 6 列 (RESULTS) 关键字 = FAIL,或失败或失败或损坏,或低电压或低安培,会将具有此值的所有行复制到“失败”表

关键字 = 消息更改将行复制到名为“消息更改”等的工作表中

任何帮助都会很棒,并在此先感谢。

4

1 回答 1

0

这应该让你开始。如果您了解一点 VBA,它真的很简单。但我同意 ErikE 你应该使用 Access 或类似的东西

            Option Compare Text
            Option Explicit

            Private Sub Worksheet_Change(ByVal Target As Range)
                Dim rng As Range
                Dim row As Long
                Dim newRowId As Long

                If ActiveSheet.Name = "Blad1" Then

                    For Each rng In Target.Cells
                        Select Case rng.Value
                            Case "FAIL"
                                row = rng.row
                                Rows(row).Cut
                                newRowId = findFirstAvailableRow(8, 1, "Blad2")
                                ThisWorkbook.Sheets("Blad2").Rows(newRowId).Insert Shift:=xlDown
                            Case Else

                        End Select
                    Next
                End If
            End Sub
            Private Function findFirstAvailableRow(iStartIndex As Long, SearchColumnIndex As Long, workSheetName As String) As Integer
                Dim i As Long

                For i = iStartIndex To 32000
                    If ThisWorkbook.Sheets(workSheetName).Cells(i, SearchColumnIndex).Value = "" Then
                        findFirstAvailableRow = i
                        Exit For
                    End If
                Next
            End Function

只需将其复制到您的工作表中并更改工作表名称(我有瑞典语版本,所有该死的东西都在 Excel 中区域化)

于 2013-06-07T08:00:24.650 回答