2011-11-12 4 views
1

У меня есть файл excel, который использует несколько рабочих листов для суммирования платежей и графика платежей для нескольких свойств.Excel - работа с текстом на нескольких листах

Он настроен таким образом, что первый лист представляет собой сводку всего, с последующими листами, детализирующими разные свойства. У меня есть столбец (только для описаний), что я хочу вернуть текст на первый лист, и если на последующих листах есть несколько записей, чтобы он дал мне знать.

Я знаю, что excel не любит работать с текстом на нескольких листах, поэтому этот код ниже работал хорошо, чтобы вывести для меня одну запись. Он всегда будет в одной и той же ячейке на последующих листах.

=IF(COUNTA(Sheet1:Sheet5!D15)=0,"", IF(COUNTA(Sheet1:Sheet5!D15)=1, (Sheet1!D15&Sheet2!D15&Sheet3!D15&Sheet4!D15&Sheet5!D15), "--> Multiple Entries")) 

Однако я столкнулся с ситуацией, когда мне нужно поставить две идентичные записи в последующие листы.

Для примера используя | в виде разрыва листа

"" | «Платный № 1» | "" | ""

«Платный № 1» | «Платный № 1» | "" | ""

"" | «Платный № 2» | «Платный № 1» | ""

Корпус №2 является нечетным, где его достаточно, чтобы иметь несколько идентичных записей, но # 3, где они разные, необходимо выделить, так как у меня есть это сейчас (-> Несколько записей). Сейчас оба случая будут выделены.

Я не знаю, с чего начать, я не могу найти ссылку на 3d (что-то вроде строк соответствия), которая обрабатывает текст, любые предложения?

Как всегда, спасибо заранее, я очень ценю всю помощь.

ответ

0

Один из способов - написать UDF, который возвращает требуемую строку. К сожалению, параметры UDF не поддерживают 3D-диапазоны, поэтому требуется работа вокруг.

Основываясь на вашем вопросе, вы должны рассмотреть одну и ту же ячейку на всех листах, кроме сводного листа. Исходя из этого, этот UDF возвращает конкатенацию одной и той же ячейки во всех листах, за исключением листа, на который помещена формула. Вы можете приспособить его, чтобы вернуть другие вещи по своему усмотрению.

Обратите внимание, что я сохранил это просто для демонстрации метода, вам нужно будет обрабатывать случаи ошибок, например r, ссылаясь на> 1 ячейку или ячейку на другом листе/книге.

Function MergeSheets(r As Range) As Variant 
    Dim a As String, s As String 
    Dim sh As Worksheet 
    Application.Volatile 

    a = r.Address 
    For Each sh In r.Worksheet.Parent.Worksheets 
     If sh.Name <> r.Worksheet.Name Then 
      s = s & sh.Range(a).Value 
     End If 
    Next 
    MergeSheets = s 
End Function 
Смежные вопросы