¿Cómo extraer texto desde una palabra a otra?

Iniciado por Cergath, 29 Mayo 2015, 22:45 PM

0 Miembros y 1 Visitante están viendo este tema.

Cergath

Hola,

Tengo una lista que va así:

Citar
...
...
..
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.

KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE

LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:

....
...
...
..

Necesito colocar el ";" (punto y coma) como se ve en el ejemplo únicamente en los items que están en KW exceptuando el último de ellos, justamente como se ve en el ejemplo. ¿Cómo podría lograrlo?... El problema es que son más de un millón de registros por lo que necesito algo automático :/

Siempre es de KW a LA, y todas esas (que están como KW - (con el guión)) son como categorías, entonces sería hacer el punto y coma para la categoría KW, exceptuando su último item...

Con excel podría hacer algo como =A1&";" pero ciertamente no me sirve porque lo aplicaría a tooodo, y solo necesito KW exceptuando su último... :( no se me ocurre qué hacer, ¿algún consejo?

Shell Root

Pues no olvides de que en Excel existe el condicional IF.

Podrías poner como esta el archivo actual unas cuantas lineas, y debajo como quieres que se modifique? No logro comprender lo que quieres,
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Cergath

Hola,

Muchas gracias por tu consejo @Shell Root, voy a intentarlo,

Respecto al archivo, no puedo adjuntarlo todo, es un .txt de más o menos 50 megas, pero adjunto una pequeñísima porción, y cómo debería quedar (en otro archivo). Yo mismo coloreé las "categorías" en negrilla para que sea más amigable a la vista...

El problema:
https://docs.google.com/document/d/1_OJk-6ugtBSSmWziaVERtx-DduLEyr5nyyDTvwxNzok/edit?usp=sharing

Como debería verse:
https://docs.google.com/document/d/1H1C1awK1N26qghm164qDAMyLDq5KlYMBbxsUT9IaYnA/edit?usp=sharing

Después de la categoría KW siempre va LA, por lo que podría funcionar como punto de referencia...

Shell Root

#3
Oka es fácil ya que tiene un patron haré una pequeña macro para que la ejecutes en Excel. Espera un momento.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Cergath

@Shell Root , no sé cómo agradecértelo ;-) estoy terminando mi trabajo de tesis en bibliometría y quería sacar un indicador con esos datos... En serio muchas pero muchas gracias por tu ayuda. Ojalá hubiera un botoncito de reputación como mínimo

Shell Root

No es nada raro, hasta se puede optimzar, pero nah...
Código (vb) [Seleccionar]
Public Sub PoC()

    Dim Row As Integer: Row = 1
    Dim DentroDeKW As Boolean: DentroDeKW = False
   
    Sheets("Hoja1").Select
    Do While Range("A" & Row).Value <> Empty
        If Mid(Range("A" & Row).Value, 1, 2) = "KW" Then
            DentroDeKW = True
        End If
       
        If Mid(Range("A" & Row + 1).Value, 1, 2) = "LA" Then
            DentroDeKW = False
        End If
       
        If DentroDeKW = True Then
            Range("A" & Row).Value = Range("A" & Row).Value & ";"
        End If
       
        Row = Row + 1
    Loop

End Sub


Resultado:
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.
KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE
LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:
    Agewall S, 2003, CLIN BIOCHEM, V36, P27, DOI 10.1016/S0009-9120(02)00417-4
    Akhtar S, 2004, CRIT CARE MED, V32, pS126, DOI 10.1097/01.CCM.0000121576.73871.2D
    Akkerhuis KM, 2002, CIRCULATION, V105, P554, DOI 10.1161/hc0502.104278
    Alpert JS, 2000, J AM COLL CARDIOL, V36, P959
    Altinier S, 2001, CLIN CHIM ACTA, V311, P67, DOI 10.1016/S0009-8981(01)00562-9
[Anonymous]
TY  - JOUR
AN  - WOS:000207966700012
DA  - Jul-Sep
J2  - Acta Bioquim. Clin. Latinoam.
KW  - CARDIAC TROPONIN-I;
ACUTE MYOCARDIAL-INFARCTION;
BRAIN NATRIURETIC;
PEPTIDE;
ARTERY-BYPASS-SURGERY;
ST-SEGMENT-ELEVATION;
CREATINE-KINASE-MB;
DEPARTMENT PATIENT SATISFACTION;
ACUTE;
PULMONARY-EMBOLISM;
CRITICALLY-ILL PATIENTS;
STAGE RENAL-DISEASE
LA  - Spanish
M1  - 3
M3  - Article
N1  - ISI Document Delivery No.: V17WG
Times Cited: 0
Cited Reference Count: 218
Cited References:
    Agewall S, 2003, CLIN BIOCHEM, V36, P27, DOI 10.1016/S0009-9120(02)00417-4
    Akhtar S, 2004, CRIT CARE MED, V32, pS126, DOI 10.1097/01.CCM.0000121576.73871.2D
    Akkerhuis KM, 2002, CIRCULATION, V105, P554, DOI 10.1161/hc0502.104278
    Alpert JS, 2000, J AM COLL CARDIOL, V36, P959
    Altinier S, 2001, CLIN CHIM ACTA, V311, P67, DOI 10.1016/S0009-8981(01)00562-9
[Anonymous]
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Cergath

#6
Hola,

Muchas gracias!, funciona perfectamente.

Edit: Todo lo que mencioné abajo ya puedo solucionarlo entonces lo he eliminado ;) , el problema que tengo y que no sé cómo resolver es el de desbordamiento :(

Edit 2: Ya pude, reemplacé Integer por Long :D

¡Muchas gracias @Shell Root! eres lo mejor :3