Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Excelis 2 veeru mõõdude järgi 3'st veerust hinna leidmine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
Terror
HV veteran
Terror

liitunud: 08.11.2001



Autoriseeritud ID-kaardiga

sõnum 05.06.2019 14:49 Excelis 2 veeru mõõdude järgi 3'st veerust hinna leidmine vasta tsitaadiga

On 3 veergu. Materjali laius, kõrgus ning hind. Oletame, et veergudes on vineeri tooriku mõõdud.
Ja on 2 sisendlahtrit kuhu kirjutad endale vajamineva mõõdu. Laiuse ja kõrguse.
Kolmas lahter hind - sinna peaks ta tabelist hindade alt otsima vastavalt mõõtudele õige hinna.


Kuidas see valem realiseerida, et ta tööle hakkaks?
St sisestades Laius 2100mm peab ta tabelist otsima = või vähima suurema väärtuse. Antud juhul on selleks 2200.
Sealt edasi peab ta arvesse võtma teise veeru kõrguse väärtust 2000mm ning leidma tabelist = või vähima suurema vaste. Kui leidub rida millel mõlemad laiuse ning kõrguse parameetrid kattuvad tagastatakse sama rea N veeru hind.

_________________
Väiksemagabariidilised trei, frees ning keevitustööd. PS.
Kommentaarid: 96 loe/lisa Kasutajad arvavad:  :: 1 :: 2 :: 87
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 05.06.2019 17:24 vasta tsitaadiga

SQL-s ei taha teha? SQL-s oleks üks lihtne päring:
sql:
  1.  
  2. SELECT * FROM <tabel> WHERE laius>=vajalik_laius AND korgus>=vajalik_korgus ORDER BY hind ASC LIMIT 1
  3.  


excelis mingid VLOOKUP jms. valemid on, aga pole nendega väga kodus kuna üldiselt ei viitsi eriti exceliga andmeid töödelda.

EDIT: SQL näide on MySQL/MariaDB syntax. Muus osas on see igas SQL mootoris sama, ainult see limit 1 on iga mootori puhul erinev, et kuidas saada üks rida ainult.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 38
tagasi üles
vaata kasutaja infot saada privaatsõnum
joulukas
Kreisi kasutaja
joulukas

liitunud: 02.12.2001




sõnum 05.06.2019 19:27 vasta tsitaadiga

napoleon kirjutas:
SQL-s ei taha teha? SQL-s oleks üks lihtne päring:
sql:
  1.  
  2. SELECT * FROM <tabel> WHERE laius>=vajalik_laius AND korgus>=vajalik_korgus ORDER BY hind ASC LIMIT 1
  3.  


excelis mingid VLOOKUP jms. valemid on, aga pole nendega väga kodus kuna üldiselt ei viitsi eriti exceliga andmeid töödelda.

EDIT: SQL näide on MySQL/MariaDB syntax. Muus osas on see igas SQL mootoris sama, ainult see limit 1 on iga mootori puhul erinev, et kuidas saada üks rida ainult.


INDEX on vähe mõistlikum, oluliselt paindlikum kui lookup. Hiljuti üks kolleeg tutvustas ja koos saime kenasti kahe parameetri indekseerimisega soovitud lõpptulemuse. Ise ma veel katsetan, seega valmis valemit ei oska anda.

_________________
HinnaVaatlus liituja nr. 285
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 12
tagasi üles
vaata kasutaja infot saada privaatsõnum
sanz671
HV vaatleja

liitunud: 04.11.2007




sõnum 06.06.2019 09:18 vasta tsitaadiga

Kiire ja lihtne lahendus vol2 (ei arvestanud kõikide kriteeriumitega icon_smile.gif )
https://www.dropbox.com/s/63tm7cmuf30igda/Book1.xlsx?dl=0
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
Terror
HV veteran
Terror

liitunud: 08.11.2001



Autoriseeritud ID-kaardiga

sõnum 06.06.2019 15:52 vasta tsitaadiga

INDEX+MATCH komboga ei suutnud ise välja mõelda lahendust.
sanz671 see lahendus annab vale tulemuse, kuna ta võtdleb veerge eraldi.
Kõigepealt oleks vaja tuvastada millised laiuse veerud vastavad laiuse parameetritele ning kõrguse võrdluses tohiks kasutada ainult neid mis olid eelnevalt laiusel TRUE.

Üritasin vahepeal VBA'ga midagi pusida ning iseenesest loogika töötab, kuid kimbutab "Out of stack" error(Run time error '28') error ning asi satub nagu lõputusse loopi.

Private Sub Worksheet_Change(ByVal Target As Range)

Button1_Click 'käivitab worksheet väljade muutuse peale makro mis uuendab hinna lahtri. Kas siit võib kuidagi loopi sattuda?

End Sub


Sub Button1_Click()
    'Declarations
   
    Dim RES200 As Worksheet
    Dim Pealeht As Worksheet
   
    Dim lastRow As Long
   
   
    Dim row_number As Long
    Dim currRow As Long
   
    Dim col1 As Integer 'The 2 column numbers where the criteria are
    Dim col2 As Integer
   
   
    Dim val1 As Integer 'the criteria to match (Change to double, int or long, if these are all numeric values)
    Dim val2 As Integer
   
    Set RES200 = ActiveWorkbook.Worksheets("RES200")
    Set Pealeht = ActiveWorkbook.Worksheets("Sheet1")
   

    currRow = 6
    lastRow = 250 'RES200.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   
    col1 = 6
    col2 = 7
   
   
    val1 = Pealeht.Range("J17").Value 'Change to values to match
    val2 = Pealeht.Range("J18").Value

   
    For currRow = 6 To 250 'lastRow
        If RES200.Cells(currRow, col1).Value >= val1 Then
            If RES200.Cells(currRow, col2).Value >= val2 Then
                    Pealeht.Range("J19").Value = RES200.Range("H" & currRow).Value

                    Exit For 'This ensures that only the first matching row will be assigned to row_number

            End If
        End If
    Next
   
End Sub


Hakkab kellelegi ehk näpukas silma?

Pealehel (Sheet1) on muidu laiuse ning kõrguse input ja hinna "output" lahter ning RES200 lehel on andmed.
Netist leitud sarnase koodi pealt tehtud, VBA'st ma mõistagi suurt ise ei jaga.

_________________
Väiksemagabariidilised trei, frees ning keevitustööd. PS.
Kommentaarid: 96 loe/lisa Kasutajad arvavad:  :: 1 :: 2 :: 87
tagasi üles
vaata kasutaja infot saada privaatsõnum
sanz671
HV vaatleja

liitunud: 04.11.2007




sõnum 06.06.2019 16:02 vasta tsitaadiga

M tulbas olev true / false määratakse kahe suuruse peale kokku. Kirjutasin K-M pikemalt lahti, et ei peaks nestitud valemeid hakkama lahkama. Õige toimimise eeldus on see, et laiused on kasvavas järjestuses koos laiuste juurde kuuluvate kõrgustega.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
Terror
HV veteran
Terror

liitunud: 08.11.2001



Autoriseeritud ID-kaardiga

sõnum 06.06.2019 20:42 vasta tsitaadiga

sanz671 kirjutas:
M tulbas olev true / false määratakse kahe suuruse peale kokku. Kirjutasin K-M pikemalt lahti, et ei peaks nestitud valemeid hakkama lahkama. Õige toimimise eeldus on see, et laiused on kasvavas järjestuses koos laiuste juurde kuuluvate kõrgustega.

Saades su lahendusest inspiratsiooni suutsin ehitada ühe valemiga lahenduse mis võtab kohe õige lõpphinna icon_smile.gif =INDEX(H6:H52;MATCH(1;IF(M14<=F6:F52;IF(M15<=G6:G52;1));0)) vajab sisestamiseks ctrl+shift+enter .

_________________
Väiksemagabariidilised trei, frees ning keevitustööd. PS.
Kommentaarid: 96 loe/lisa Kasutajad arvavad:  :: 1 :: 2 :: 87
tagasi üles
vaata kasutaja infot saada privaatsõnum
sanz671
HV vaatleja

liitunud: 04.11.2007




sõnum 06.06.2019 23:40 vasta tsitaadiga

Terror kirjutas:
sanz671 kirjutas:
M tulbas olev true / false määratakse kahe suuruse peale kokku. Kirjutasin K-M pikemalt lahti, et ei peaks nestitud valemeid hakkama lahkama. Õige toimimise eeldus on see, et laiused on kasvavas järjestuses koos laiuste juurde kuuluvate kõrgustega.

Saades su lahendusest inspiratsiooni suutsin ehitada ühe valemiga lahenduse mis võtab kohe õige lõpphinna icon_smile.gif =INDEX(H6:H52;MATCH(1;IF(M14<=F6:F52;IF(M15<=G6:G52;1));0)) vajab sisestamiseks ctrl+shift+enter .

Väga hea icon_smile.gif
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Excelis 2 veeru mõõdude järgi 3'st veerust hinna leidmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.