Есть ли способ скопировать данные с помощью фильтра макросов / кнопок?

314
Chris

У меня есть рабочий лист с идентификаторами сотрудников вверху и датами сбоку.

Затем мне нужно ставить там букву Y или N каждый день, когда у меня 96 сотрудников, так что это действительно долго. Есть ли в наличии кнопка или макрос, который, если человек получает Y, может скопировать этих людей на другой лист, и если кто-то новый получит Y, он также перенесет их. Так что проще сузить людей с Y

http://i.imgur.com/tNc2Nan.jpg

1
Скриншоты !!!! :) - или хотя бы используйте пост, постарайтесь показать данные и как они выложены! Таким образом, вы должны вручную добавлять Y или N каждый день. В конце этого вы хотите скопировать все эти строки с Y в другой документ. Это верно? Dave 9 лет назад 1
Да, именно это я и хочу, и если новый человек получит Y, он добавит его на новый лист. Chris 9 лет назад 0
http://imgur.com/tNc2Nan Итак, вот пример: вы можете видеть, что у некоторых есть Y, а у некоторых есть NI, которые хотят что-то сделать, поэтому, когда Y появляется, он помещает их на новый лист с людьми, которые получили Y в любую дату добавьте их на отдельный лист с тем же макетом, что и образец Chris 9 лет назад 0
Что положит что на новый лист? Я предполагаю колонку, или просто имя человека, или всю строку? Dave 9 лет назад 0
Я хочу, чтобы закончился полный столбец Chris 9 лет назад 0
Так что, если бы я запустил его, Сэм и Бобби бы не скопировали только других людей, если позже они получат Y. Chris 9 лет назад 0

1 ответ на вопрос

1
Dave

Этот VBa делает то, что я думаю, что вы хотите ... Ваш вопрос не самый ясный.

Помните, что с VBa сначала создайте копию файла, так как он не имеет функции отмены

Option Explicit  Sub FindYeTheMapOfTreasure()   Worksheets("Sheet2").Range("A:F").Clear Worksheets("Sheet2").Range("A:B").Value = Worksheets("Sheet1").Range("A:B").Value   Dim row As Integer row = 2  Do While Worksheets("Sheet1").Range("C" & row).Value <> ""  If Worksheets("Sheet1").Range("C" & row).Value = "Y" Then Worksheets("Sheet2").Range("C:C").Value = Worksheets("Sheet1").Range("C:C").Value End If  If Worksheets("Sheet1").Range("D" & row).Value = "Y" Then Worksheets("Sheet2").Range("D:D").Value = Worksheets("Sheet1").Range("D:D").Value End If  If Worksheets("Sheet1").Range("E" & row).Value = "Y" Then Worksheets("Sheet2").Range("E:E").Value = Worksheets("Sheet1").Range("E:E").Value End If  If Worksheets("Sheet1").Range("F" & row).Value = "Y" Then Worksheets("Sheet2").Range("F:F").Value = Worksheets("Sheet1").Range("F:F").Value End If  If Worksheets("Sheet1").Range("G" & row).Value = "Y" Then Worksheets("Sheet2").Range("G:G").Value = Worksheets("Sheet1").Range("G:G").Value End If row = row + 1 Loop   End Sub 

Лист1

enter image description here

После запуска sheet2 выглядит

enter image description here

Большое спасибо, я собираюсь попробовать это. Да, я знаю, я знаю, чего я хочу в своей голове, но объяснить это немного сложнее, смеется. Chris 9 лет назад 0

Похожие вопросы