< návrat zpět

MS Excel


Téma: Hlednání hodnoty dle prvního znaku rss

Zaslal/a 21.1.2014 12:43

Dobrý den,

mám ve VBA pro excel napsané makro na převod dat z jedné tabulky do druhé. Problém nastal v okamžiku kdy jeden sloupec obsahuje dva druhy dat. Jeden je text plus čísla a druhý pouze čísla. Mohl by mi někdo poradit jak při čtení nebo zápisu data rozdělit???
Ideálně pokud bude číslo udělat A pokud začíná textem udělat B.

Předem moc děkuji

Zaslat odpověď >

Strana:  1 2   další »
#017382
avatar
to by trebalo vidiet dokument

auto254
tetuska3656
vladoo5412.5454

napr. mozu byt taketo ?

ked hej tak to budete musite urobit funkciu ktora vam zisti poradie cisla v bunke

len ted netusim ci napr. nemoze byt aj taketo:
3bit5475
4you547,554
atd.

tazko sa nato robi funkcia ked nevidim predlohucitovat
#017383
avatar

Palooo napsal/a:

to by trebalo vidiet dokument

auto254
tetuska3656
vladoo5412.5454

napr. mozu byt taketo ?

ked hej tak to budete musite urobit funkciu ktora vam zisti poradie cisla v bunke

len ted netusim ci napr. nemoze byt aj taketo:
3bit5475
4you547,554
atd.

tazko sa nato robi funkcia ked nevidim predlohu


No dokument poslat nemohu jedná se o citlivá data ale mají tři základní formy formáty.
Tp123456
SN1223325
A pak pouze číslo které vždy (alespoň doposud) začíná číslem 2 a má 10 cifer.
Potřebuji oddělit číselné hodnoty od hodnot Tp a SNcitovat
icon #017384
avatar
No dokument poslat nemohu jedná se o citlivá data
Nedá mi, musím reagovať. Po zhliadnutí uvedeného "vysvetlenia" nemám pochopenie pre nikoho, kto je ochotný radiť. Vytvor vzorový súbor, "citlivé" dáta z neho predsa odmazať dokážeš!

(na test numerickej hodnoty je vo VBA funkcia IsNumeric)citovat
#017385
avatar
takze textova cast bude mat len 2 znaky??

ked ano, tak to je potom jednoduche:
TestString = Cells(1, 1)
aText = Left(TestString, 2)
bCislo = Mid(TestString, 3, Len(TestString) - 2)
citovat
#017386
avatar
Díky za radu pokusím se to nějak implementovat.citovat
#017388
avatar
No tak zatím to moc nefunguje.
Jsem ve VBA začátečník tak se možná budu ptát hloupě.

Do TestString nahrajeme hodnotu z pole 1;1??

Poté testujeme TestString do aText???
aText = Left(TestString, 2) provede co??

bCislo = Mid(TestString, 3, Len(TestString) - 2) provede co??citovat
#017389
avatar
Takhle vypadá program:
Sub tlačítko1_Klepnutí()
Dim I, pocetRadku As Integer

pocetRadku = Range("A1").End(xlDown).Row

RadekKam = 16

Cislo1 = 0

For I = 1 To pocetRadku
If Cells(I, 1).Value = "R" Or Cells(I, 1).Value = "T_MASTER_STR.ROZPAD" Then
RadekKam = RadekKam + 2
If Cells(I, 1).Value = "R" Then
Cislo1 = Cislo1 + 1
Cislo2 = 1
End If

Else
NazevSoucasti = Cells(I, 5).Value
Pozice = Cells(I, 2).Value
CisloVykresu = Cells(I, 3).Value
PocetKusu = Cells(I, 6).Value
Hmotnost = Cells(I, 11).Value

Worksheets("SE-TEC").Activate
Cells(RadekKam, 3).Value = CStr(Cislo1) + "." + CStr(Cislo2) + ")"
Cells(RadekKam, 4).Value = NazevSoucasti + " (poz." + CStr(Pozice) + ")"
Cells(RadekKam, 5).Value = PocetKusu
Cells(RadekKam, 6).Value = Hmotnost
RadekKam = RadekKam + 1

TestString = CisloVykresu
If Left(TestString, 2) Then
Cells(RadekKam, 4).Value = "ČSN" + CisloVykresu

aText = Left(TestString, 2)
bCislo = Mid(TestString, 3, Len(TestString) - 2)
Else
Cells(RadekKam, 4).Value = CisloVykresu
End If
RadekKam = RadekKam + 1
Worksheets("Data z AGILE").Activate
Cislo2 = Cislo2 + 1
End If
Next I



Worksheets("SE-TEC").Activate

End Sub
citovat
#017390
avatar
TestString = Cells(1, 1)
aText = Left(TestString, 2)
bCislo = Mid(TestString, 3, Len(TestString) - 2)

napr.
TestString = "GG545874"

aText = "GG"
bCislo = "545874"citovat
#017392
avatar
Aha takže tato konstrukce mi rozloží danou proměnou a když potřebuji vytvořit podmínku, lze použít aText jako do IF aby mi to v případě že je v něm GG poslalo program jednou větví a v případě že je prázdný druhou větví???
Předpokládám že pokud je proměnná pouze číslo aText zůstane prázdný??citovat
#017393
avatar

LubošKroft napsal/a:

Aha takže tato konstrukce mi rozloží danou proměnou a když potřebuji vytvořit podmínku, lze použít aText jako do IF aby mi to v případě že je v něm GG poslalo program jednou větví a v případě že je prázdný druhou větví???
Předpokládám že pokud je proměnná pouze číslo aText zůstane prázdný??


1. odpoved: ano vzdy to zobere prve dva znaky z lava ... ked text nebude obsahot ziadny znak tak vysledok LEFT funkcie je "" .... tak isto ked tam bude len jeden znak napr "G" tak vysledok je "G"

2. odpoved: ked je len cislo mozno vam pomoze funkcia:
If Not IsEmpty(TestString) And IsNumeric(TestString) Then
else
end if

tu zistuje ci nieje bunka prazna a sucasne je cislo potom spravicitovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21