Обработка строк с Excel - как удалить часть строки, если другая часть там?

Если вы хотите использовать отдельный запрос, который будет возвращать другие столбцы, кроме отдельного, вам нужна какая-то стратегия, как «объединить» объекты. Представьте себе строки, подобные этим:

------------------------------
| comarca_id| key | status    |
| 1         | A   | your_state|
| 1         | B   | your_state|
| 2         | C   | your_state|
------------------------------

Что вы получите в этом случае?

SELECT DISTINCT comarca_id FROM comarca; вернет 1,2

Однако, как вы можете объединить два ( или более) записей, которые имеют одинаковые comarca_id и status?

Это оставляет вам три случая:

  1. вы предполагаете, что comarca_id + status уникально - > вам не нужен запрос DISTINCT
  2. Может быть несколько строк с одинаковыми comarca_id и status -> вы не можете сделать запрос отличным
  3. вы требуется только отдельные значения comarca_id -> заставить ваш метод возвращать List<BigInteger>
7
задан Lance Roberts 4 November 2008 в 21:20
поделиться

7 ответов

Я просто получил это как возможное решение по электронной почте, также:

=IF(A15<>A14,G15,IF(OR(AND(G15="CR247, ",ISNUMBER(FIND("CR247, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR215, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR180, ",H14))),AND(G15="CR180, ",ISNUMBER(FIND("CR215, ",H14))),G15="CR113, "),H14,G15&H14))

(это имеет "реальные" значения с правилами приоритета),

Это выглядит относительно подобным ответу @Joseph.

Существует ли лучшее решение?

0
ответ дан 7 December 2019 в 05:33
поделиться

VBA: можно всегда использовать объект RegExp. Я думаю, что это дает Вам способность протестировать что-либо на Вашем сценарии, пока Вы создаете правильно регулярное выражение.

Выезд: http://msdn.microsoft.com/en-us/library/yab2dx62 (По сравнению с 85) .aspx (для regexp ссылки)
и простой инструмент для тестирования regexps: http://www.codehouse.com/webmaster_tools/regex/

В ячейке: Вы могли сделать это в большем количестве Excel дружественный путь:
предположите на столбце A:A, у Вас есть значения.
Можно добавить новый столбец, где Вы выполняете проверку
if(indirect("A"&row()) <> indirect("A"&row()-1), indirect("G"&row()), indirect("G"&row())& indirect("H"&row()))
или независимо от того, что значения. Я предполагаю однако, что на одном ответвлении, если оператор значение должно быть пробелом. После этого Вы связываете только значения столбцов B:B (пропускающий пробелы в случае необходимости).

Надеюсь, это поможет.

1
ответ дан 7 December 2019 в 05:33
поделиться

Во-первых, почему бы не сохранить массив строк вместо этого, поскольку Вы проходите все ячейки, затем свяжите все это в конце?

Иначе Вы будете использовать строковые функции как INSTR и MID, чтобы сделать что-то как:

start1 = instr(myLongString,"Y, ")
if start1 > 0 Then
    start2 = instr(myLongString,"D, ")
    if start2 > 0 then
        newLongString = left(myLongString, start2 - 1) & _
                        mid(myLongString, start2 + 3)
    end if
end if

Но, поскольку я сказал, я сохраню массив, который легко циклично выполнить через, затем после того как у Вас есть все значения, Вы ЗНАЕТЕ, что будете использовать, просто связывать их в конце.

2
ответ дан 7 December 2019 в 05:33
поделиться

Попытка:

=IF(ISERROR(FIND("Y",A1)),A1,SUBSTITUTE(A1,"D, ",""))

Но это предполагает, что у Вас всегда есть запятая и пространство после D.

5
ответ дан 7 December 2019 в 05:33
поделиться

Вероятно, легче запуститься в конце, сделать Ваши дополнения к началу строки и только добавить D, если Y не присутствует.

0
ответ дан 7 December 2019 в 05:33
поделиться

Я предполагаю, что D мог появиться где угодно, таким образом, как насчет:

If InStr(strString, "Y") > 0 Then
   strString = Replace(strString, "d", "")
   strString = Replace(strString, "  ", "")
   strString = Replace(strString, " ,", "")
   strString = Replace(strString, ",,", ",")
End If
0
ответ дан 7 December 2019 в 05:33
поделиться

Если нет слишком многих из этих комбинаций, которые Вы хотите удалить, можно использовать =IF (НАЙДИТЕ ("D"; A2)> 0; ЗАМЕНА (A2; 1; 3 дюйма";); A2).

0
ответ дан 7 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

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