You are on page 1of 12

Option Explicit ' Force explicit variable declaration.

'************************

'ÓõíÜñôçóç ALine ãéá ôïí

'ðñïóäéïñéóìü óå ó÷Ýóç ìå

'ôïí ÷Üñôç ðëáóôéêüôçôáò

'************************

Private Function ALine(ByVal LL As Single, ByVal PI As Single) As Byte

If PI >= 4# And PI >= 0.73 * (LL - 20) Then

ALine = True

Else

ALine = False

End If

End Function

Private Function FinesClassify(ByVal LL As Single, ByVal PI As Single) As String

Dim return_value As String

If LL < 50 Then

If PI > 7 And ALine(LL, PI) = True Then

return_value = "CL"

ElseIf PI >= 4 And PI <= 7 And ALine(LL, PI) = True Then

return_value = "CL-ML"

Else

return_value = "ML"

End If

Else

If ALine(LL, PI) = True Then

return_value = "CH"

Else

return_value = "MH"
End If

End If

FinesClassify = return_value

End Function

Private Sub Classify(ByVal LL As Single, ByVal LLapoj As Single, ByVal PI As Single, ByVal Cu As Single,
ByVal Cc As Single, ByVal PercentGravel As Single, ByVal PercentSand As Single, ByVal No200 As
Single, ByVal Organics As Boolean, ByRef GroupSymbol As String, ByRef EnglishName As String, ByRef
GreekName As String)

LLapoj = 0.5 * LL

Dim BigCategory As String

Dim FinesCategory As String

Dim CuRef As Single

If No200 >= 0.5 Then

BigCategory = "Fine-Grained"

Else

BigCategory = "Coarse-Grained"

End If

If Organics = True And BigCategory = "Fine-Grained" Then

BigCategory = "Organics"

End If

'Fine-Grained

If BigCategory = "Fine-Grained" Or BigCategory = "Organics" Then

'Oganics

If BigCategory = "Organics" And (LLapoj = 0 Or LLapoj / LL >= 0.75) Then BigCategory = "Fine-
Grained"

If BigCategory = "Organics" And LLapoj <> 0 And LLapoj / LL < 0.75 Then

'OL

If LL < 50 Then
GroupSymbol = "OL"

If PI >= 4# And ALine(LL, PI) = True Then

If No200 >= 0.7 Then

If No200 >= 0.85 Then

EnglishName = "Organic Clay"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò"

Else

If PercentSand >= PercentGravel Then

EnglishName = "Organic Clay with Sand"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò ìå ¢ììï"

Else

EnglishName = "Organic Clay with Gravel"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò ìå ×áëßêéá"

End If

End If

Else

If PercentSand >= PercentGravel Then

If PercentGravel < 0.15 Then

EnglishName = "Sandy Organic Clay"

GreekName = "Áììþäçò ÏñãáíéêÞ ¢ñãéëïò"

Else

EnglishName = "Sandy Organic Clay with Gravel"

GreekName = "Áììþäçò ÏñãáíéêÞ ¢ñãéëïò ìå ×áëßêéá"

End If

Else

If PercentSand < 0.15 Then

EnglishName = "Gravelly Organic Clay"

GreekName = "×áëéêþäçò ÏñãáíéêÞ ¢ñãéëïò"

Else

EnglishName = "Gravelly Organic Clay with Sand"

GreekName = "×áëéêþäçò ÏñãáíéêÞ ¢ñãéëïò ìå ¢ììï"


End If

End If

End If

Else

If No200 >= 0.7 Then

If No200 >= 0.85 Then

EnglishName = "Organic Silt"

GreekName = "ÏñãáíéêÞ Éëýò"

Else

If PercentSand >= PercentGravel Then

EnglishName = "Organic Silt with Sand"

GreekName = "ÏñãáíéêÞ Éëýò ìå ¢ììï"

Else

EnglishName = "Organic Silt with Gravel"

GreekName = "ÏñãáíéêÞ Éëýò ìå ×áëßêéá"

End If

End If

Else

If PercentSand >= PercentGravel Then

If PercentGravel < 0.15 Then

EnglishName = "Sandy Organic Silt"

GreekName = "Áììþäçò ÏñãáíéêÞ Éëýò"

Else

EnglishName = "Sandy Organic Silt with Gravel"

GreekName = "Áììþäçò ÏñãáíéêÞ Éëýò ìå ×áëßêéá"

End If

Else

If PercentSand < 0.15 Then

EnglishName = "Gravelly Organic Silt"

GreekName = "×áëéêþäçò ÏñãáíéêÞ Éëýò"

Else
EnglishName = "Gravelly Organic Silt with Sand"

GreekName = "×áëéêþäçò ÏñãáíéêÞ Éëýò ìå ¢ììï"

End If

End If

End If

End If

'OH

Else

GroupSymbol = "OH"

If ALine(LL, PI) = True Then

If No200 >= 0.7 Then

If No200 >= 0.85 Then

EnglishName = "Organic Clay"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò"

Else

If PercentSand >= PercentGravel Then

EnglishName = "Organic Clay with Sand"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò ìå ¢ììï"

Else

EnglishName = "Organic Clay with Gravel"

GreekName = "ÏñãáíéêÞ ¢ñãéëïò ìå ×áëßêéá"

End If

End If

Else

If PercentSand >= PercentGravel Then

If PercentGravel < 0.15 Then

EnglishName = "Sandy Organic Clay"

GreekName = "Áììþäçò ÏñãáíéêÞ ¢ñãéëïò"

Else

EnglishName = "Sandy Organic Clay with Gravel"


GreekName = "Áììþäçò ÏñãáíéêÞ ¢ñãéëïò ìå ×áëßêéá"

End If

Else

If PercentSand < 0.15 Then

EnglishName = "Gravelly Organic Clay"

GreekName = "×áëéêþäçò ÏñãáíéêÞ ¢ñãéëïò"

Else

EnglishName = "Gravelly Organic Clay with Sand"

GreekName = "×áëéêþäçò ÏñãáíéêÞ ¢ñãéëïò ìå ¢ììï"

End If

End If

End If

Else

If No200 >= 0.7 Then

If No200 >= 0.85 Then

EnglishName = "Organic Silt"

GreekName = "ÏñãáíéêÞ Éëýò"

Else

If PercentSand >= PercentGravel Then

EnglishName = "Organic Silt with Sand"

GreekName = "ÏñãáíéêÞ Éëýò ìå ¢ììï"

Else

EnglishName = "Organic Silt with Gravel"

GreekName = "ÏñãáíéêÞ Éëýò ìå ×áëßêéá"

End If

End If

Else

If PercentSand >= PercentGravel Then

If PercentGravel < 0.15 Then

EnglishName = "Sandy Organic Silt"

GreekName = "Áììþäçò ÏñãáíéêÞ Éëýò"


Else

EnglishName = "Sandy Organic Silt with Gravel"

GreekName = "Áììþäçò ÏñãáíéêÞ Éëýò ìå ×áëßêéá"

End If

Else

If PercentSand < 0.15 Then

EnglishName = "Gravelly Organic Silt"

GreekName = "×áëéêþäçò ÏñãáíéêÞ Éëýò"

Else

EnglishName = "Gravelly Organic Silt with Sand"

GreekName = "×áëéêþäçò ÏñãáíéêÞ Éëýò ìå ¢ììï"

End If

End If

End If

End If

End If

'Inorganics - Fine Grained

Else

FinesCategory = FinesClassify(LL, PI)

GroupSymbol = FinesCategory

If FinesCategory = "CL" Then

EnglishName = "Lean Clay"

GreekName = "Éó÷íÞ ¢ñãéëïò"

ElseIf FinesCategory = "CL-ML" Then

EnglishName = "Silty Clay"

GreekName = "Éëõþäçò ¢ñãéëïò"

ElseIf FinesCategory = "ML" Then

EnglishName = "Silt"

GreekName = "Éëýò"

ElseIf FinesCategory = "CH" Then


EnglishName = "Fat Clay"

GreekName = "Ðá÷éÜ ¢ñãéëïò"

ElseIf FinesCategory = "MH" Then

EnglishName = "Elastic Silt"

GreekName = "ÅëáóôéêÞ Éëýò"

End If

If No200 >= 0.7 Then

If No200 >= 0.85 Then

EnglishName = EnglishName

GreekName = GreekName

Else

If PercentSand >= PercentGravel Then

EnglishName = EnglishName + " with Sand"

GreekName = GreekName + " ìå ¢ììï"

Else

EnglishName = EnglishName + " with Gravel"

GreekName = GreekName + " ìå ×áëßêéá"

End If

End If

Else

If PercentSand >= PercentGravel Then

If PercentGravel < 0.15 Then

EnglishName = "Sandy " + EnglishName

GreekName = "Áììþäçò " + GreekName

Else

EnglishName = "Sandy " + EnglishName + " with Gravel"

GreekName = "Áììþäçò " + GreekName + " ìå ×áëßêéá"

End If

Else

If PercentSand < 0.15 Then


EnglishName = "Gravelly " + EnglishName

GreekName = "×áëéêþäçò " + GreekName

Else

EnglishName = "Gravelly " + EnglishName + " with Sand"

GreekName = "×áëéêþäçò " + GreekName + " ìå ¢ììï"

End If

End If

End If

End If

'Coarse-Grained

Else

'Gravel

If PercentGravel > PercentSand Then

GroupSymbol = "G"

EnglishName = "Gravel"

GreekName = "×Üëéêåò"

'Sand

Else

GroupSymbol = "S"

EnglishName = "Sand"

GreekName = "¢ììïò"

End If

If GroupSymbol = "S" Then

CuRef = 6#

Else

CuRef = 4#

End If
'Ëßãï Ëåðôüêïêêï

If No200 <= 0.12 Then

If Cu >= CuRef And Cc >= 1 And Cc <= 3 Then

EnglishName = "Well-Graded " + EnglishName

GreekName = GreekName + " ÊáëÞò ÄéáâÜèìéóçò"

If No200 < 0.05 Then

GroupSymbol = GroupSymbol + "W"

Else

GroupSymbol = GroupSymbol + "W-" + GroupSymbol

End If

Else

EnglishName = "Poorly Graded " + EnglishName

GreekName = GreekName + " ÊáêÞò ÄéáâÜèìéóçò"

If No200 < 0.05 Then

GroupSymbol = GroupSymbol + "P"

Else

GroupSymbol = GroupSymbol + "P-" + GroupSymbol

End If

End If

'5-12% fines case

If No200 >= 0.05 And No200 <= 0.12 Then

FinesCategory = FinesClassify(LL, PI)

If FinesCategory = "ML" Or FinesCategory = "MH" Then

GroupSymbol = GroupSymbol + "M"

EnglishName = EnglishName + " with Silt"

GreekName = GreekName + " ìå Éëýò"

ElseIf FinesCategory = "CL" Or FinesCategory = "CH" Then

GroupSymbol = GroupSymbol + "C"

EnglishName = EnglishName + " with Clay"


GreekName = GreekName + " ìå ¢ñãéëï"

Else

GroupSymbol = GroupSymbol + "C"

EnglishName = EnglishName + " with Silty Clay"

GreekName = GreekName + " ìå Éëõþäç ¢ñãéëï"

End If

End If

'Ðïëý Ëåðôüêïêêï

Else

FinesCategory = FinesClassify(LL, PI)

If FinesCategory = "ML" Or FinesCategory = "MH" Then

GroupSymbol = GroupSymbol + "M"

EnglishName = "Silty " + EnglishName

GreekName = "Éëõþä. " + GreekName

ElseIf FinesCategory = "CL" Or FinesCategory = "CH" Then

GroupSymbol = GroupSymbol + "C"

EnglishName = "Clayey " + EnglishName

GreekName = "Áñãéëþä. " + GreekName

Else

GroupSymbol = GroupSymbol + "C-" + GroupSymbol + "M"

EnglishName = "Silty, Clayey " + EnglishName

GreekName = "Éëõùáñãéëþä. " + GreekName

End If

End If

If PercentSand < PercentGravel Then

If PercentSand >= 0.15 Then


EnglishName = EnglishName + " with Sand"

GreekName = GreekName + " ìå ¢ììï"

End If

Else

If PercentGravel >= 0.15 Then

EnglishName = EnglishName + " with Gravel"

GreekName = GreekName + " ìå ×áëßêéá"

End If

End If

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim LL, PI As Single

Dim GroupSymbol As String, EnglishName As String, GreekName As String

Classify Range("G147").Value, Range("LLapoj").Value, Range("G148").Value, Range("G149").Value, _

Range("G150").Value, Range("G151").Value, Range("G152").Value, Range("G153").Value, _

Range("G154").Value, GroupSymbol, EnglishName, GreekName

Range("G155").Value = GroupSymbol

Range("G156").Value = EnglishName

Range("G157").Value = GreekName

End Sub

You might also like