Премахване на редове и колони

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео

Тест за преминаване към следващия урок

 
Команда Remove Other Columns изтрива
Всички колони без избраната или избраните
Всички избрани колони
 
Командата Remove Top Rows изтрива
Брой редове в началото
Всеки посочен ред

Въпроси и отговори

  • Kocho:

    Нищо работа, но ще ми трябва файла. Пишете ми на ЛС

    Обаче, хм, трябва да видим как ще го опишем решението тук

    Димитринка Вълкова:

    Моето скромно мнение, решението е с програмен код на VBA. Счетоводните програми и някои ERP системи генерират този формат за импорт в Excel, който не помага данните да се обработват в Excel Най-доброто решение е да се напише коректна заявка в базата данни за желания формат.

    Димитринка Вълкова:

    Специално към Kocho: Любопитна съм да споделиш решението, по всяка вероятност с Power Query

    Васил Мутафов:

    Привет, отсъствах известно време. Към Kocho - неразбрах как да Ви пратя файла на ЛС. Иначе аз съм стигнал до тук в решението: От ехел 1.Нова колона "Concatenate" и събирам "фактура", №, "дата" 2. В Query раздърпвам по редове инфото -"fill down". Ако знаех как да изтрия множество произволни редове в заявката.......

    Kocho:

    може и на kochomindev@gmail.com

    Димитринка Вълкова:

    Kocho, благодаря за идеята. С Power Query се получава много лесно и без код на VBA. Merge Queries прави чудеса!

    Kocho:

    Аз всъщност не използвам Merge Queries. за номера на фактурата правя Conditional Column: Ако в колона "име на документа/артикул" е "фактура" да върне стойността от колона "номер" else null След това в тази колона правя Fill down и така получавам колона с номерата на фактурите

    По аналогичен начин си правя колона за датите, а за контрагентите просто прилагам Fill down.

    След това в колона "име на документа/артикул" филтрирам и махам "фактура".

    Накрая преименувам колоните, размествам ги, и оправям формата ако е нужно.

    Ето го и М кодът (Source е Table1, където са ми примерните данни, но може да бъде файл или база данни, линк към страница и т.н.):

    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Име на документа/артикул", type text}, {"номер", type any}, {"дата/бр", type any}, {"сума", type number}, {"контрагент", type text}}), #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Custom", each if [#"Име на документа/артикул"] = "фактура" then [номер] else null), #"Filled Down" = Table.FillDown(#"Added Conditional Column",{"Custom"}), #"Renamed Columns" = Table.RenameColumns(#"Filled Down",{{"Custom", "Фактура"}}), #"Added Conditional Column1" = Table.AddColumn(#"Renamed Columns", "Custom", each if [#"Име на документа/артикул"] = "фактура" then [#"дата/бр"] else null), #"Filled Down1" = Table.FillDown(#"Added Conditional Column1",{"Custom"}), #"Changed Type1" = Table.TransformColumnTypes(#"Filled Down1",{{"Custom", type date}}), #"Renamed Columns1" = Table.RenameColumns(#"Changed Type1",{{"Custom", "дата"}}), #"Filled Down2" = Table.FillDown(#"Renamed Columns1",{"контрагент"}), #"Filtered Rows" = Table.SelectRows(#"Filled Down2", each ([#"Име на документа/артикул"] <> "фактура")), #"Renamed Columns2" = Table.RenameColumns(#"Filtered Rows",{{"номер", "мярка"}, {"Име на документа/артикул", "Артикул"}, {"дата/бр", "бр"}}), #"Changed Type2" = Table.TransformColumnTypes(#"Renamed Columns2",{{"бр", Int64.Type}}) in #"Changed Type2"

    Димитринка Вълкова:

    Супер решение, благодаря! Аз използвам Merge Query. Ето как: Duplicate Query за заявката с данните и запазвам само колоните с данните за фактурата. След това Merge на двете заявки за колоната с номера на фактурата. За 4-те нови колони - Fill Down. А накрая филтър за артикул - без Фактура. И също се получава.

    Kocho:

    И така става, защо не. Единственото неудобство е, че създаваме още една заявка